commit typefeat commit template
A commit that introduces new functionality visible to end users or downstream consumers of your API.
format
feat(scope): short imperative description of the new capability
- what was added or enabled (bullet 1)
- what was added or enabled (bullet 2)
- any notable implementation detail worth preserving in history
Why this change is needed and what problem it solves for users or
downstream consumers. Keep under 72 characters per line.real examples
feat(auth): add magic-link email login
- generate a time-limited signed token and send it via SendGrid
- validate token on callback and issue a session cookie
- expire tokens after 15 minutes and invalidate on first use
Reduces sign-up friction for users who prefer not to create a password;
magic links are the only auth method supported by our enterprise SSO
customers.feat(api): support cursor-based pagination on /v2/items
- add after_cursor and before_cursor query params to replace offset
- encode cursor as base64 opaque string to hide sort field implementation
- return next_cursor and prev_cursor in response envelope
Offset pagination was returning stale or duplicate results under concurrent
writes; cursor pagination is stable regardless of inserts between pages.feat(dashboard): add CSV export for all report tables
- add Export button to TableToolbar that opens format selector sheet
- stream CSV through a Server Action to avoid loading full dataset into memory
- set Content-Disposition header so browser downloads rather than navigates
The previous workaround was to copy-paste from the table; CSV export
satisfies the compliance team's data retention audit workflow.feat(cli): add --dry-run flag to preview changes without writing
- parse --dry-run / -n flag in root command and propagate to all writers
- print a coloured diff of what would be written instead of writing files
- exit 0 so --dry-run can be used in scripts without special-casing
Power users requested preview mode before running destructive operations
in production environments.when to use
Use feat when you are adding something that did not exist before: a new endpoint, a new UI component, a new CLI flag, a new integration, or any capability that users or API consumers can observe.
git-agent automatically analyzes your changes and infers the correct commit type.
brew install gitagenthq/brew/git-agentFAQ
Does feat always trigger a minor version bump?Yes, in tools that follow SemVer automation (semantic-release, release-please). A feat commit increments the MINOR version. If the feat also contains a BREAKING CHANGE footer, it increments MAJOR instead.
Should I use feat for a new dependency that enables a feature?Split it: chore(deps) for the dependency addition and feat(scope) for the capability it enables. The dependency addition by itself does not add user-visible functionality.
What is the difference between feat and a refactor that adds a new code path?If the new code path produces a behaviour change observable by the user or API consumer, it is a feat. If it only changes the internal structure without changing any observable output, it is a refactor.