Learn-skills.dev release-please
Set up release-please for automated releases in a repository. Use this skill when users want to add release-please to their project, configure GitHub Actions for automated releases, set up conventional commit workflows, create release-please config files, or bootstrap release-please in a new or existing repository.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aaronflorey/agent-skills/release-please" ~/.claude/skills/neversight-learn-skills-dev-release-please && rm -rf "$T"
data/skills-md/aaronflorey/agent-skills/release-please/SKILL.mdSetting Up Release-Please
This skill guides you through setting up release-please in a repository.
Before You Start
Ask the user (if not clear from context):
- What language/framework? (determines
)release-type - Single package or monorepo?
- Current version of the package(s)?
Setup Steps
1. Create GitHub Actions Workflow
Create
.github/workflows/release-please.yml:
on: push: branches: [main] permissions: contents: write pull-requests: write name: release-please jobs: release-please: runs-on: ubuntu-latest steps: - uses: googleapis/release-please-action@v4 with: release-type: <type> # See references/release-types.md
If the user needs CI to run on release PRs (common), they need a PAT:
with: token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
2. Create Config Files (for advanced setups)
For monorepos or custom config, create manifest files instead of using
release-type input.
release-please-config.json:
{ "packages": { ".": { "release-type": "<type>" } } }
.release-please-manifest.json:
{ ".": "<current-version>" }
Then update the workflow to omit
release-type:
- uses: googleapis/release-please-action@v4 with: token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
3. Bootstrap Existing Repository
For repos with existing releases, set the current version in
.release-please-manifest.json to match the latest release tag.
If there's extensive commit history, add
bootstrap-sha to config to limit changelog scope:
{ "bootstrap-sha": "<commit-sha-before-first-desired-commit>", "packages": { ... } }
Common Setup Patterns
Node.js Package
release-type: node- Updates
andpackage.jsonCHANGELOG.md
Python Package
release-type: python- Updates
/pyproject.toml
andsetup.pyCHANGELOG.md
Go Module
release-type: go- Updates
only (version from tags)CHANGELOG.md
Monorepo
- Use manifest config with multiple packages
- Consider
ornode-workspace
pluginscargo-workspace - See
references/manifest-config.md
Post-Setup Checklist
Tell the user:
- Commit and push the new files
- Start using conventional commits:
,feat:
,fix:feat!: - Use squash-merge for PRs (cleaner changelogs)
- Release-please will create a Release PR after releasable commits
- Merge the Release PR to create the GitHub release
Reference Files
Read these for detailed options:
- All supported languagesreferences/release-types.md
- Action inputs, outputs, examplesreferences/github-actions.md
- Full config options, plugins, monoreposreferences/manifest-config.md