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

GitHub

Committing Changes

Steps

For Regular Commits

  1. Stage changes with git add
  2. Commit using Conventional Commits format: <type>(<scope>): <description>

For PRs

  1. The PR title is what matters - PRs are squash-merged
  2. 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 CI
  • chore.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"