skills/gh-release-pipeline/SKILL.md
Set up or align a GitHub Actions release pipeline for a versioned package, library, CLI, or marketplace action. Use when standardizing repos around the verify-then-release shape: push to main → guardrails → semantic-release tags + publishes → version-bump commit back to main with `[skip ci]`. Pairs with `gh-deploy-pipeline` for running apps; use for publishing versioned artifacts to a registry, not deploying a running service.
npx skillsauth add uinaf/skills gh-release-pipelineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Push-to-main, semantic-release driven, self-bumping. Only the publish plumbing varies by target (npm, SwiftPM/CocoaPods, Go, Rust, GitHub Action, Homebrew tap). Rust uses release-plz in place of semantic-release; the pipeline shape is identical.
Do not use this for Pages, SST, Cloudflare, or other running-app deploys unless the same change also publishes a versioned package. Use gh-deploy-pipeline for deploy surfaces.
push to main
└─► verify job (lint + typecheck + test + build, on PR and push)
└─► release job (push to main only, !contains [skip ci])
├─► semantic-release: analyze commits, tag, GitHub Release, notes
├─► publish to target (npm / pods / goreleaser / marketplace tag)
└─► @semantic-release/git: commit version bump back to main with [skip ci]
Both jobs check out at fetch-depth: 0. The verify job is gated by a cancellable concurrency group; the release job uses a separate non-cancellable group so two releases never race.
.github/workflows/*, release config, tap formula, package metadata, and any failed PR/check logs. If the org has a known-good sibling repo for the same target, read that workflow before choosing an action.main is the release branch, commits follow Conventional Commits, the default branch has a merge policy that fits release automation, and the target registry has a trusted publishing/OIDC path or another narrowly scoped publish credential..github/workflows/ci.yml with verify and release jobs per references/workflows.md..releaserc.json, release.config.js, or a "release" block in package.json) per references/semantic-release.md.release Environment (COCOAPODS_TRUNK_TOKEN, TAP_GITHUB_TOKEN, etc.). Package/library/CLI/marketplace publishes use the Environment as a secret boundary with deployment: false.[skip ci] short-circuit to both jobs so the bump commit does not retrigger.GIT_AUTHOR_NAME/GIT_COMMITTER_NAME + emails) so the bump commit is attributed to the token actor or release bot, not the last human pusher.feat: / fix: → watch verify→release run → confirm tag, GitHub Release, published artifact, and the chore(release): … [skip ci] commit on main.Load workflow snippets from references/workflows.md, target-specific release shape from references/targets.md, and semantic-release config from references/semantic-release.md only after the package type is known.
Minimal release anchors:
release:
needs: [verify]
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[skip ci]') }}
concurrency: { group: release-${{ github.repository }}-main, cancel-in-progress: false }
{
"branches": ["main"],
"plugins": [
["@semantic-release/commit-analyzer", { "preset": "conventionalcommits" }],
["@semantic-release/git", { "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" }]
]
}
main must remain allowed, prefer branch protection with only required_conversation_resolution enabled. Use organization or repository rulesets for conversation resolution only when making default-branch changes go through pull requests is intended. Preserve existing approvals, status checks, signed-commit, and actor restrictions when changing branch policy.[skip ci] in the message, and respected by both jobs' if: guards.pull_request rule with required_review_thread_resolution: true requires default-branch changes to go through PRs; account for that before relying on a release bump commit pushed by Actions. Use the default Actions actor when it can be allowed cleanly; otherwise use a dedicated release bot or GitHub App token that branch rules explicitly allow, plus matching author/committer metadata. Metadata alone does not authorize the write, and broad admin-style exceptions are not the default answer.# v1.10.0; verify the SHA resolves upstream before committing it.development
Ban direct `useEffect` in React code. Use when writing, refactoring, reviewing, or migrating React components or hooks that import, call, add, or replace direct `useEffect`; when an agent reaches for effects for derived state, fetching, event reactions, resets, or external sync; or when adding lint/agent rules for a no-direct-useEffect policy. Do not use for ordinary React work with no effect smell, non-React code, or legitimate effect architecture outside React.
development
Independently audit existing code, diffs, branches, or pull requests by spawning mandatory concern-specific reviewer subagents, then synthesizing their evidence into a ship decision. Use when triaging PR risk, deciding whether someone else's change is safe to ship, or following up after runtime proof. Produces a `ship it` / `needs review` / `blocked` verdict. Do not use to self-check a change you just authored.
testing
Set up or align a repository's GitHub collaboration and delivery surface: repo settings, branch/ruleset policy, PR and security templates, Actions hardening, GitHub Environments, release workflows, and deploy workflows. Use when standardizing GitHub setup for repos, CI/CD, publishing versioned packages, or deploying running apps; route app deploy details to deploy references and package publish details to release references.
tools
Run structured Codex/Claude autoreview closeout for uncommitted changes, branch/PR diffs, or single commits: choose the target, run the bundled review helper, validate findings, and rerun focused tests until clean. Use when asked for autoreview, Codex review, Claude review, automated PR review, second-model review, or merge-readiness review.