Setup tagpr
This skill guides you through setting up tagpr for automated release management.
What is tagpr?
tagpr is a GitHub Actions tool that:
- Automatically creates pull requests for pending releases
- Suggests semantic version increments based on commit history
- Tags commits when PRs merge
- Creates GitHub Releases automatically
Prerequisites
GH_PAT (Personal Access Token): tagpr requires a GitHub Personal Access Token with repo and workflow permissions to push tags and trigger subsequent workflows. Create a PAT and add it as a repository secret named GH_PAT.
Why not GITHUB_TOKEN? The default token cannot trigger other workflows when pushing tags, which is required for release workflows.
Setup Workflow
Determine the project type:
- Go project with goreleaser? → See references/goreleaser-integration.md
- TypeScript/Node.js project? → Follow "TypeScript/Node.js workflow" below
- Other projects → Follow "Standard workflow" below
Standard workflow:
- Create GH_PAT and add as repository secret
- Create
.tagprconfiguration file - Create GitHub Actions workflow file
TypeScript/Node.js workflow:
- Create GH_PAT and add as repository secret
- Create
.tagprconfiguration file withversionFileandcommand - Create GitHub Actions workflow with asset upload
Configuration Files
.tagpr Configuration
Create .tagpr file at the repository root.
Standard configuration (version from git tags only):
[tagpr]
releaseBranch = main
versionFile = -
vPrefix = true
release = draft
Go project with version.go:
[tagpr]
releaseBranch = main
versionFile = version.go
vPrefix = true
release = draft
TypeScript/Node.js project (e.g., Obsidian plugin):
[tagpr]
releaseBranch = main
versionFile = manifest.json,package.json
vPrefix = true
changelog = true
release = draft
majorLabels = major
minorLabels = minor
command = npm run build
Configuration Options
| Option | Description | Default |
|---|---|---|
releaseBranch |
Target branch for releases | main |
versionFile |
File(s) containing semantic version. Use - for git tags only. Multiple files can be comma-separated |
- |
vPrefix |
Whether tags include v prefix (e.g., v1.2.3) |
true |
release |
GitHub Release creation: true, draft, or false. Use draft for immutable releases |
true |
changelog |
Enable/disable changelog updates | true |
command |
Command to run before release (for build/file modifications) | - |
majorLabels |
Custom labels for major version increment | tagpr:major |
minorLabels |
Custom labels for minor version increment | tagpr:minor |
commitPrefix |
Customize commit message prefix | [tagpr] |
GitHub Actions Workflow
See references/workflow-templates.md for workflow templates.
Goreleaser Integration
For Go projects using goreleaser, see references/goreleaser-integration.md.
Version Determination
tagpr determines the next version using:
Label-based: If merged PRs have labels:
tagpr:majorormajor→ Major version bumptagpr:minororminor→ Minor version bump- No label → Patch version bump
Manual override: Edit the version file or apply labels to the tagpr PR
Verification Steps
After setup, verify by:
- Push a commit to the release branch
- Check that tagpr creates a release PR
- Merge the release PR
- Verify that a tag and GitHub Release are created