Docs
GitHub Action
Push a tag. The release notes write themselves, and everyone who asked for something in it is told when you publish.
Use it#
.github/workflows/release-notes.yml
name: Release notes
on:
push:
tags: ["v*"]
jobs:
notes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: vamsiy78/shipnoted-release-notes@v1
with:
api-key: ${{ secrets.SHIPNOTED_API_KEY }}
project: your-slugCreate the key under Install & connect → API keys with the CI preset, and save it as the repository secret SHIPNOTED_API_KEY. That is all the Action needs: it can read and write releases, nothing else.
On the tag, it collects the pull requests merged since the previous tag, sends them to Shipnoted, and a draft appears in your dashboard with the tag as its version. Pull requests that mention a request (SN-42) are linked to it.
Inputs and outputs#
api-keyRequired. A key with the releases:write scope.projectRequired. Your project's slug.tagThe tag being released. Default: the tag that triggered the run. It becomes the version.previous-tagWhere the notes start. Default: the tag before this one.publish"true" publishes at once. Default "false": a draft to review.emailWith publish, "true" also emails confirmed subscribers.titleA title. Default: written from the changes.urlOnly for a custom domain. Default https://shipnoted.com.Outputs: release-id, url (when published) and source (claude or builtin: who wrote the notes). Use them in later steps, for example to post the link to a channel.
- id: notes
uses: vamsiy78/shipnoted-release-notes@v1
with: { api-key: ${{ secrets.SHIPNOTED_API_KEY }}, project: your-slug, publish: "true", email: "true" }
- run: echo "Released ${{ steps.notes.outputs.url }}"Draft or publish#
By default you get a draft: read it, change anything that is off, publish from the dashboard. AI-written notes can be wrong, and nothing goes to your customers until you say so. When you trust it, set publish: "true" and the release goes out, linked requests move to Shipped and their voters get one email each.
Without the Action#
It is a thin wrapper over the CLI, so any CI works:
SHIPNOTED_API_KEY=$KEY SHIPNOTED_PROJECT=your-slug npx shipnoted release draft --tag "$TAG" --publishSee CLI for the options.