committing-changes
Creates commits following project conventions. Handles Conventional Commits with project-specific scopes, PR title requirements, changesets for releases, and CI validation rules.
committing
changes
SKILL.md.claude/skills/committing-changes
GitHubCommitting 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 the @kitz/ prefix (effect, vitest). Comma-separate for multiple packages. Omit for repo-level.
feat(effect): add a Path operation # @kitz/effect
fix(effect, vitest): align matcher types # Multiple packages
ci: cache the pnpm store # Repo-level (no scope)
Types
| Type | Description | Semver impact |
|---|---|---|
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 CIchore.docs: README, guides → No release, CI skipped
CI Skips: ci: or chore.docs: PR titles skip code checks (only format runs)
Releases: Tag-driven (see the root CONTRIBUTING.md). Squash-merged PR titles become the release notes, so the title's type and scope matter.
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
- Semver rule:
feat= "new capability",fix= "works better"