A hands-on guide to installing Cullit, configuring it for your project, and generating your first set of production release notes.
By the end of this tutorial, you’ll have Cullit generating categorized release notes from your git history, with optional AI enhancement and automated publishing.
| Requirement | Details |
|---|---|
| Node.js | v22 or later — node --version |
| Git repository | Any repo with commits and at least one tag |
| AI API key (optional) | Anthropic, OpenAI, or Gemini key for AI-powered notes |
Install globally so you can run cullit from any repo.
Or use it without installing via npx:
pnpm add -g cullit or yarn global add cullitNavigate to your project and run the interactive setup. Cullit will ask a few questions and create a .cullit.yml config file.
Here’s what .cullit.yml looks like:
cullit init entirely. Cullit uses sensible defaults if no config file exists.First, check what tags you have:
Now generate notes between two tags:
You just generated categorized release notes from your commit history, with zero AI cost. The template engine parses conventional commits (feat:, fix:, chore:, etc.) and groups them automatically.
--from and --to, Cullit auto-detects by using the two most recent tags.### ✨ Features
### 🐛 Bug Fixes
Semantic HTML with <h2> categories, <ul> lists, and a metadata footer. Ready to embed in your docs site or email template.
XSS-safe: all content is escaped
Template-based notes are structured, but AI makes them readable. The AI rewrites your commit messages into polished, audience-appropriate descriptions.
CULLIT_API_KEY (format: clt_...) to unlock AI, Jira enrichment, Linear enrichment, and all publishers. Get your key →Now generate with AI:
Notice the difference? The AI version has a summary, human-readable descriptions, and context that commit messages alone don’t provide.
| Audience | Best for | Style |
|---|---|---|
developer |
Engineering team, internal changelog | Technical, references PRs and commits |
end-user |
Product updates, customer-facing | Plain language, benefit-focused |
executive |
Leadership updates, board reports | High-level impact, metrics-oriented |
Add publish targets to your config and Cullit will push release notes to multiple destinations simultaneously.
$SLACK_WEBHOOK_URL syntax tells Cullit to read from your environment. Never commit webhook URLs directly in config files.The real power of Cullit is running it automatically on every release. Add the GitHub Action to generate and publish notes when you push a tag.
fetch-depth: 0 is required so Cullit can access the full git history to find commits between tags. Without it, only the triggering commit is available.Not sure if you should release? Cullit analyzes your unreleased commits and tells you.
| Topic | Link |
|---|---|
| Full configuration reference | Configuration docs → |
| Jira & Linear as primary source | Integration docs → |
| Using as a TypeScript library | Library usage → |
| REST API server | API docs → |
| Docker deployment | Docker docs → |
| Report issues or contribute | GitHub → |