Loading...
Loading...
Configures release-please for monorepos and single-package repos. Handles manifest files, component tagging, changelog sections, and extra-files setup. Use when setting up automated releases, fixing release workflow issues, or configuring version bump automation.
npx skill4agent add laurigates/claude-plugins release-please-configuration| File | Purpose |
|---|---|
| Package configuration, changelog sections, extra-files |
| Current versions for each package |
| GitHub Actions workflow |
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"include-component-in-tag": true,
"separate-pull-requests": true,
"packages": {
"package-a": {
"component": "package-a",
"release-type": "simple",
"extra-files": ["package-a/version.json"]
}
}
}| Field | Required | Purpose |
|---|---|---|
| Yes (monorepo) | Creates |
| Yes (monorepo) | Unique identifier for each package; must be set for every package |
| Recommended | Creates per-package release PRs instead of combined |
Duplicate release tag: v2.0.0v2.0.0include-component-in-tag: truecomponent{
"include-component-in-tag": true,
"packages": {
"my-package": {
"component": "my-package", // Add this to every package
...
}
}
}Multiple paths for : package-a, package-bcomponent:"component": "package-name"| Type | Use Case | Version File |
|---|---|---|
| Generic projects | |
| npm packages | |
| Python (pyproject.toml) | |
| Rust crates | |
| Go modules | |
typepathjsonpath{
"packages": {
"my-plugin": {
"release-type": "simple",
"extra-files": [
{"type": "json", "path": "my-plugin/.claude-plugin/plugin.json", "jsonpath": "$.version"}
]
}
}
}// WRONG - won't update the version field
"extra-files": [".claude-plugin/plugin.json"]
// CORRECT - uses JSON updater with jsonpath
"extra-files": [
{"type": "json", "path": ".claude-plugin/plugin.json", "jsonpath": "$.version"}
]// WRONG - path gets doubled (package-name/package-name/.claude-plugin/...)
"extra-files": [
{"type": "json", "path": "my-plugin/.claude-plugin/plugin.json", "jsonpath": "$.version"}
]
// CORRECT - path is relative to the package directory
"extra-files": [
{"type": "json", "path": ".claude-plugin/plugin.json", "jsonpath": "$.version"}
]extra-files| File Type | Format |
|---|---|
| JSON | |
| YAML | |
| TOML | |
| XML | |
| Plain text | |
{
"changelog-sections": [
{"type": "feat", "section": "Features"},
{"type": "fix", "section": "Bug Fixes"},
{"type": "perf", "section": "Performance"},
{"type": "refactor", "section": "Code Refactoring"},
{"type": "docs", "section": "Documentation"}
]
}| Commit Type | Version Bump | CHANGELOG Section |
|---|---|---|
| Minor | Features |
| Patch | Bug Fixes |
| Major | Features (with BREAKING CHANGE) |
| Major | Breaking Changes |
| None | (hidden) |
| None | Documentation |
| None | Code Refactoring |
| Patch | Performance |
.release-please-manifest.json{
"package-a": "1.2.3",
"package-b": "2.0.0"
}name: Release Please
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}- uses: googleapis/release-please-action@v4
with:
token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }}release-please-config.json{
"packages": {
"new-package": {
"component": "new-package",
"release-type": "simple",
"extra-files": ["new-package/.version-file.json"],
"changelog-sections": [...]
}
}
}.release-please-manifest.json{
"new-package": "1.0.0"
}v1.0.0component-v1.0.0"include-component-in-tag": true"component": "package-name"v1.0.0extra-files// Correct
"extra-files": ["my-package/.claude-plugin/plugin.json"]
// Wrong (if package path is "my-package")
"extra-files": [".claude-plugin/plugin.json"]<type>(<scope>): <description>
[optional body]
[optional footer(s)]feat(auth): add OAuth2 support
fix(api): handle timeout edge case
feat(cli)!: redesign command interface
BREAKING CHANGE: Commands now use subcommand syntax.| Pattern | Bump |
|---|---|
| Minor (1.0.0 → 1.1.0) |
| Patch (1.0.0 → 1.0.1) |
| Major (1.0.0 → 2.0.0) |
| No bump |
# Check latest release-please-action version
curl -s https://api.github.com/repos/googleapis/release-please-action/releases/latest | jq -r '.tag_name'
# List pending release PRs
gh pr list --label "autorelease: pending"
# View recent workflow runs
gh run list --workflow=release-please.yml --limit=5
# Check failed workflow logs
gh run view <run-id> --log-failed