Set up or align GitHub repo settings, branch/ruleset policy, templates, Actions hardening, Environments, release workflows, and deploy workflows for continuously publishable or deployable repositories.
97
100%
Does it follow best practices?
Impact
96%
1.35xAverage score across 7 eval scenarios
Passed
No known issues
Common failure modes when standing up or operating this pipeline. Check here before rewriting the workflow.
feat:, fix:, breaking). chore:/docs:/etc. are no-ops by default.npx semantic-release --dry-run --no-ci from the release branch. The output lists analyzed commits and the decision.feat: / fix: commit, or extend commit-analyzer releaseRules to bump on the type you care about.[skip ci] guard is missing on the release job's if:, or the bump message no longer contains [skip ci].main. Message must contain [skip ci]. Workflow must have if: ${{ … !contains(github.event.head_commit.message, '[skip ci]') }} on both verify and release.@semantic-release/git pushcontents: write. Do not fix this by exposing a write token to dependency install steps.@semantic-release/github or the publish plugin ran without the credential it expected.GITHUB_TOKEN on the semantic-release step. For npm, prefer trusted publishing: configure npm, grant id-token: write, and remove NPM_TOKEN; use a step-scoped NPM_TOKEN only when trusted publishing is unavailable.actions/upload-artifact so a deploy job can download it. GitHub Actions artifact quota or retention can block deployment even though the release exists.actions/upload-artifact / actions/download-artifact, and the release already has a GitHub Release asset, package version, image digest, or provider-native package.cancel-in-progress: true.concurrency: { group: release-${{ github.repository }}-main, cancel-in-progress: false } at the job level. The verify job's cancellable group is separate.[skip ci] commits and is re-running the suite on the bump.[skip ci] guard to verify too. The bot commit changes generated files (CHANGELOG.md, lockfiles); re-running verify on it is wasted CI minutes at best and a flake source at worst.fetch-depth: 1 (the default) hides previous tags.actions/checkout@<full-sha> # v6.0.2 with fetch-depth: 0 on both verify and release.npx -y npm@^11.10.0 trust github <package-name> --repo <owner>/<repo> --file <workflow-file> --env <environment> --yes.id-token: write, use a GitHub-hosted runner, and run a recent enough Node/npm toolchain for npm OIDC.package.json needs "publishConfig": { "access": "public" }.package.json needs a public repository URL matching the GitHub repo configured on npm.release Environment and exposed only on the publish step.feat: / fix:), or pod trunk delete <podname> <version> (requires owner) and re-run.dist/, Package.swift rewrite) leak into the working tree before goreleaser runs.goreleaser release --clean flag is set, and that any pre-release script writes its output outside the working tree or stages it before goreleaser starts.@v1 see no updatesupdate-major-action-tag action/script with tests (see release-targets.md -> GitHub Action). Verify by clicking the tag on the GitHub release page — it should match the latest v1.x.y.