releasepr

$npx mdskill add compozy/agh/releasepr

Guides adoption and use of pr-release CLI for release automation.

  • Installs pr-release binary and wires GitHub Actions workflow.
  • Depends on pr-release CLI, GitHub Actions, git-cliff, and GoReleaser.
  • Inspects conventional commits to compute next semantic version.
  • Generates changelog, opens release PR, and triggers production release.

SKILL.md

.github/skills/releaseprView on GitHub ↗
---
name: releasepr
description: "Guides adoption and day-to-day use of the pr-release CLI in a consuming GitHub repository: installing the binary, wiring the release GitHub Actions workflow, authoring .pr-release.yaml, following conventional commits for semantic versioning, adding custom release notes with add-note, validating with dry-run, and understanding the release-PR then merge then production-release lifecycle. Use when a project depends on compozy/releasepr (pr-release) and needs to configure, run, or troubleshoot its release automation. Not for editing the pr-release Go source itself, and not a general changelog or semantic-versioning tutorial."
license: MIT
metadata:
  domain: release-automation
  triggers: pr-release, releasepr, release PR, changelog, conventional commits, git-cliff, GoReleaser, .pr-release.yaml, add-note, dry-run
  role: specialist
  scope: integration
---

`pr-release` (Go module `github.com/compozy/releasepr`) automates the GitHub
release workflow: it inspects conventional commits, computes the next semantic
version, generates a `git-cliff` changelog, opens or updates a release pull
request, and — once that PR merges — drives a GoReleaser production release.
This skill is for agents working in a **consuming project** that depends on
pr-release. It is not for hacking on the pr-release Go source.

The detail that makes setup and usage correct lives in `references/`. The
inline content in this file is a **dispatcher and a tripwire, not the
contract**. Match the task in the router, then read the listed file in full
before acting.

## Required Reading Router

Match the task to the row. Read the listed file(s) **in full before** producing
output or running commands. They are load-bearing, not appendices.

| Task                                                          | MUST read                                                          |
| ------------------------------------------------------------- | ------------------------------------------------------------------ |
| Set up pr-release in a repo for the first time                | `references/setup.md` + `references/configuration.md`              |
| Create or change `.pr-release.yaml` / env vars / artifacts    | `references/configuration.md`                                      |
| Run or script a CLI command, choose flags                     | `references/commands.md`                                           |
| Understand or debug the release lifecycle / CI behavior       | `references/release-workflow.md`                                   |
| Write commit messages or add custom release notes             | `references/release-notes.md`                                      |
| A release step failed or behaved unexpectedly                 | `references/troubleshooting.md`                                    |

## Reference Index

- `references/setup.md` — install options (prebuilt tarball, `go install`), the
  GitHub token requirement, owner/repo auto-detection order, copying the
  workflow template, and the first dry-run.
- `references/configuration.md` — every `.pr-release.yaml` field, defaults,
  validation rules, the full environment-variable alias matrix, and
  `release_artifacts` constraints.
- `references/commands.md` — `pr-release`, `dry-run`, `add-note`, `version`:
  every flag and its exact behavior.
- `references/release-workflow.md` — the end-to-end lifecycle: which commits
  trigger what, release branch/PR naming, dry-run checks, and how a merge
  becomes a production release.
- `references/release-notes.md` — conventional-commit prefixes that drive the
  version bump, the `add-note` workflow, and `.release-notes/` archival.
- `references/troubleshooting.md` — symptom → cause → fix for the common
  failures (token format, owner/repo detection, "no release PR produced", etc.).

## Operating loop

1. **Confirm the dependency.** Verify the project actually uses pr-release
   (a release workflow invoking `pr-release`, a `.pr-release.yaml`, or an
   explicit request). If it does not, this skill does not apply.

2. **Verify wiring before changing anything.** Run the read-only helper from
   the consuming repo root:
   `bash skills/releasepr/scripts/check-setup.sh`
   It reports PASS/WARN/FAIL for the binary, token, config file, owner/repo
   resolution, conventional commits, and the workflow file. It only inspects —
   it never writes, pushes, or calls mutating APIs.

3. **Set up (if check-setup reports missing pieces).** Copy
   `skills/releasepr/assets/release.yml.template` into
   `.github/workflows/` and `skills/releasepr/assets/pr-release.yaml.template`
   to `.pr-release.yaml`, then adjust.
   **STOP. Read `references/setup.md` and `references/configuration.md` in full
   before installing pr-release or editing any config.** The asset templates and
   the bullets here are starting points, not the contract — defaults, validation
   ranges, and the env-var matrix are only complete in those files.

4. **Run or script a command.** The de-facto standard CI invocation across
   every observed consumer is
   `pr-release pr-release --force --enable-rollback --ci-output` — install via
   `go run "<module>@<pinned tag>"`. `--force` makes it idempotent, not "release
   with no changes".
   **STOP. Read `references/commands.md` in full before running `pr-release`,
   `dry-run`, or `add-note`, or adding any flag to a script.** The flag list
   here is a tripwire; semantics (e.g. `--rollback`, `--session-id`,
   `--skip-pr`) are only correct in that file.

5. **Reason about lifecycle / CI.** Before explaining why a release did or did
   not happen, or editing the workflow.
   **STOP. Read `references/release-workflow.md` in full before diagnosing CI
   behavior or modifying the release workflow.** Trigger rules and the
   merge → production-release path are only accurate there.

6. **Diagnose a failure.**
   **STOP. Read `references/troubleshooting.md` in full before proposing a fix
   for any pr-release error.** Match the exact error string to its row.

## Gist tripwires (incomplete on purpose)

Conventional-commit prefixes drive the version bump — wrong prefixes mean wrong
versions or "no changes":

- `fix:` → patch · `feat:` → minor · `feat!:` / `BREAKING CHANGE:` → major.
- A commit subject starting with `release:` or `ci(release):` merged to the
  default branch is what triggers the **production release** — do not hand-write
  such commits.
- Bot commits and `Merge pull request` commits are skipped by the release-PR job.

**STOP. Read `references/release-notes.md` and `references/release-workflow.md`
in full before advising on commit messages or release timing.** The three
bullets above are tripwires, not the rule set.

Setup prerequisites that cause the most real-world failures:

- Checkout MUST be unshallow with tags (`fetch-depth: 0`, `fetch-tags: true`)
  or the version is wrong.
- `git-cliff` MUST be installed in the runner; pr-release shells out to it.
- Use a dedicated `RELEASE_TOKEN` (PAT/App), not the default `GITHUB_TOKEN`,
  or downstream checks won't dispatch.

**STOP. Read `references/setup.md` in full before installing or wiring
pr-release in any repository.** These three are tripwires, not the setup
contract.

## Bundled resources

- `scripts/check-setup.sh` — **read-only** consumer-repo wiring verifier. Safe
  to run anytime; performs no writes, pushes, or mutating API calls.
- `assets/pr-release.yaml.template` — copy-in starter config (every field
  commented).
- `assets/release.yml.template` — copy-in starter GitHub Actions release
  workflow for a consuming repo.

More from compozy/agh

SkillDescription
agent-exploration>-
aghAGH runtime and contribution guide. Use for sessions, agents, native tools, skills, memory, network, tasks, capabilities, bundles, QA, docs, and repo work. Do not use for unrelated projects.
agh-cleanup-failure-paths>-
agh-code-guidelines>-
agh-contract-codegen-coshipContract co-ship for AGH wire changes. Use when editing public DTOs, OpenAPI, JSON-RPC extension shapes, generated clients, or handler request/response semantics. Do not use for internal Go refactors or test-only changes that leave the wire contract unchanged.
agh-data-boundariesData-boundary audit for AGH route loaders, TanStack Query caches, paginated catalogs, filters, ordering, totals, live streams, workspace-scoped reads, and their backend APIs. Use when adding, changing, or debugging those paths. Don't use for presentational-only UI or backend work with no public read-model impact.
agh-designAGH visual-design authority for production UI, static artifacts, prototypes, and reviews. Use when creating or reviewing an AGH surface or changing tokens, typography, spacing, depth, icons, or motion. Do not use for capture-only verification; use agh-ui-screenshot.
agh-qa-bootstrapBootstraps isolated AGH QA labs and emits the canonical manifest for downstream QA. Use when local QA needs daemon, workspace, provider, or playbook setup. Do not use for unit tests, planning-only work, or browser-only checks.
agh-schema-migrationAuthors append-only Goose SQL migrations for AGH SQLite streams and keeps declarative schema sources, atlas.sum, Atlas checks, sqlc output, and migration tests synchronized. Use for SQLite table, column, index, constraint, trigger, or seed-data changes under internal/store or internal/memory. Do not use for in-memory structures, derived Markdown memory, or non-SQLite caches.
agh-test-conventions>-