Docs
CLI
Set up, ship and read feedback from a terminal or CI. No install: npx runs it.
init#
npx shipnoted initRun it in your app’s folder. It asks for an API key (typed without showing), finds your project, detects the framework, and shows the one-line change before making it.
- Detects Next.js (app router), Remix and React Router, Vite and plain HTML. For others it prints the tag to paste.
- Adds the widget to
app/layout.tsx,app/root.tsxorindex.html. Running it twice changes nothing. - Saves
SHIPNOTED_PROJECTto.env.local(or.env) and adds that file to.gitignore. The key itself is only saved if you pass--save-key. - With
--webhook https://…, registers an endpoint and saves its signing secret asSHIPNOTED_WEBHOOK_SECRET.
npx shipnoted init --yes --project acme --webhook https://example.com/hooks/shipnoted
npx shipnoted init --dry-run # show what it would do, change nothingRelease from CI#
release draft reads your git history between two refs, collects the merged pull requests (merge commits and squash commits alike, skipping merges of branches, reverts and version bumps), and sends them to Shipnoted to be written up as New, Improved and Fixed.
# on a tag: everything since the previous tag becomes a draft, with the tag as its version
npx shipnoted release draft --tag v1.4.0
# skip the review: publish, and email subscribers
npx shipnoted release draft --tag v1.4.0 --publish --email
# a custom range
npx shipnoted release draft --from v1.3.0 --to HEADPull requests that mention a request (SN-42) close the loop when published: the request ships and its voters are told. No changes since the last tag is not an error; it says so and exits 0. Inside GitHub Actions it also writes release-id, url and source to $GITHUB_OUTPUT. There is a ready-made GitHub Action.
npx shipnoted release list
npx shipnoted release create --title "Dark mode" --version v1.4.0 --body-file notes.md --publish
npx shipnoted release publish r_abc123 --emailFeedback#
npx shipnoted feedback --sort revenue --status open
npx shipnoted feedback --segment beta:true # what the beta customers asked for
npx shipnoted request SN-42
npx shipnoted status SN-42 planned --eta Q1
npx shipnoted reply SN-42 "We are on it" --internal
npx shipnoted themes
npx shipnoted loopWebhooks#
npx shipnoted webhooks list
npx shipnoted webhooks create https://example.com/hook --events feedback.created
npx shipnoted webhooks test we_abc
npx shipnoted webhooks pause we_abc # and: resume, deleteConfiguration#
SHIPNOTED_API_KEY(snk_…) andSHIPNOTED_PROJECT(your slug).initcan save the slug for you.SHIPNOTED_URLif you are not onhttps://shipnoted.com.--jsonon any command prints machine-readable output.- Exit codes: 0 done, 1 the API or the command failed, 2 usage (a missing key, an unknown command).
Give CI the least access it needs: create the key with the CI preset (read and write releases).