Committing Changes
Steps
For Regular Commits
- •Stage changes with
git add - •Commit using Conventional Commits format:
<type>(<scope>): <description>
For PRs
- •The PR title is what matters - PRs are squash-merged
- •PR title must follow CC format
Reference
Scopes
Package name minus @kitz/ prefix. Comma-separate for multiple packages. Omit for repo-level.
code
feat(core): add new utility # @kitz/core fix(core, arr): update shared type # Multiple packages ci: add Vercel Remote Cache # Repo-level (no scope)
Types
| Type | Description | Version Bump |
|---|---|---|
feat | New feature | Minor |
fix | Bug fix | Patch |
docs | Documentation | Patch |
perf | Performance improvement | Patch |
style | Formatting, whitespace | None |
refactor | Code change (no behavior change) | None |
test | Adding/updating tests | None |
build | Build system, dependencies | None |
ci | CI configuration | None |
chore | Other maintenance | None |
chore.docs | README, guides (not code docs) | None |
Special Rules
chore.docs vs docs:
- •
docs(pkg): JSDoc, code comments → Patch release, full CI - •
chore.docs: README, guides → No release, CI skipped
CI Skips: ci: or chore.docs: PR titles skip code checks (only format runs)
Releases: Handled automatically by @kitz/release based on conventional commits. No manual steps required.
Bypasses (edge cases only)
- •
<!-- cc-bypass -->in PR body: Skip CC validation
Notes
- •Individual PR commits don't matter - only the PR title affects releases
- •Scopes are for changelogs, not CI filtering (Turborepo uses git diff)
- •Semver rule:
feat= "new capability",fix= "works better"