commit type

feat commit template

A commit that introduces new functionality visible to end users or downstream consumers of your API.

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.
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.

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/tap/git-agent
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.