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
Scan to join WeChat group