Configuration Guide
Changesmith can be configured at the project level via .changesmith.json in your repository root.
Creating a Config File
The easiest way is to run:
changesmith init
This creates a .changesmith.json with sensible defaults.
Config Options
defaultBranch
Type: string
Default: "main"
The default branch to use when determining commit ranges.
{
"defaultBranch": "develop"
}
excludeTypes
Type: string[]
Default: ["chore", "style", "ci"]
Conventional commit types to exclude from the changelog.
{
"excludeTypes": ["chore", "style", "ci", "test", "build"]
}
Available types:
feat— New featuresfix— Bug fixesdocs— Documentation changesstyle— Formatting, white-space, etc.refactor— Code restructuringperf— Performance improvementstest— Adding/updating testsbuild— Build system changesci— CI/CD changeschore— Maintenance tasksrevert— Reverted commits
Tip: Keep feat and fix — they're usually what users care about.
includeScopes
Type: string[]
Default: [] (all scopes included)
Only include commits with these conventional commit scopes. An empty array means all scopes are included.
{
"includeScopes": ["api", "web", "core"]
}
When set, only commits like feat(api): ... or fix(web): ... will appear in the changelog. Commits without a scope or with a non-matching scope are excluded.
excludeScopes
Type: string[]
Default: []
Exclude commits with these conventional commit scopes from the changelog.
{
"excludeScopes": ["deps", "internal"]
}
Commits like chore(deps): bump lodash or refactor(internal): ... will be excluded. If both includeScopes and excludeScopes are set, includeScopes takes precedence — a commit must match an included scope AND not match an excluded scope.
styleGuide
Type: string
Default: ""
A style guide name that influences the tone and format of generated changelogs. When set, the AI uses the named style as a baseline for generation.
{
"styleGuide": "keep-a-changelog"
}
customPrompt
Type: string
Default: undefined
Additional instructions for the AI when generating changelogs.
{
"customPrompt": "Focus on user-facing changes. Use simple language that non-technical users can understand. Keep each item to one sentence."
}
Example prompts:
For technical audiences:
{
"customPrompt": "Include technical details. Mention affected APIs and breaking changes prominently."
}
For end users:
{
"customPrompt": "Write for non-technical users. Focus on benefits and new capabilities, not implementation details."
}
For specific formatting:
{
"customPrompt": "Use emoji prefixes: 🚀 for features, 🐛 for fixes, ⚡ for performance."
}
Example Configurations
Minimal (Defaults)
{}
Standard Project
{
"defaultBranch": "main",
"excludeTypes": ["chore", "style", "ci", "test"]
}
User-Facing Product
{
"defaultBranch": "main",
"excludeTypes": ["chore", "style", "ci", "test", "build", "refactor"],
"customPrompt": "Write for end users, not developers. Focus on what changed in the product experience. Avoid technical jargon."
}
Technical Library
{
"defaultBranch": "main",
"excludeTypes": ["style", "ci"],
"customPrompt": "This is a developer library. Include breaking changes prominently. Mention affected function names and migration steps."
}
Enterprise/Compliance
{
"defaultBranch": "main",
"excludeTypes": [],
"customPrompt": "Include all changes for audit purposes. Note the commit hash and author for each change."
}
Environment Variables
These environment variables affect CLI behavior:
| Variable | Description |
| --- | --- |
| CHANGESMITH_TOKEN | Auth token (no login needed when set) |
| CHANGESMITH_API_URL | API endpoint override |
Environment variables take precedence over stored configuration. Empty or whitespace-only values are ignored.
Web Dashboard Settings
Additional settings are available in the Changesmith web dashboard:
- Auto-generate on release — Trigger generation when a GitHub release is created
- Auto-generate on tag — Trigger generation when a tag is pushed
- Email notifications — Get notified when drafts are ready for review
- Style template — Pre-defined style templates (Keep a Changelog, Semantic, etc.)
These settings sync with your repository but aren't stored in .changesmith.json.