nix/config/claude/rules/git.md

2.7 KiB

Git Workflow Rules

Commit Message Format

type(scope): imperative summary

Problem: describe the issue or motivation

Solution: describe what this commit does

Header

  • type (required): feat fix docs refactor perf test ci build revert
  • scope (optional): lowercase module/area name, e.g. feat(parser):
  • summary: imperative mood, lowercase after colon, no trailing period, max 72 chars

Body

Required for any non-trivial change. Use Problem: / Solution: sections. 2-3 sentences per section, max. Wrap at 72 characters. Separate from header with a blank line.

Use backticks around code identifiers, function names, and file paths (e.g. setup(), lua/oil/view.lua, FIELD_NAME).

Examples

Good:

fix(lsp): correct off-by-one in `diagnostic_range`

Problem: diagnostics highlighted one character past the actual error,
causing confusion on adjacent tokens.

Solution: subtract 1 from the end column returned by the language
server before converting to 0-indexed nvim columns.
refactor: extract repeated buffer lookup into `get_buf_entry`

Bad:

Fixed stuff
feat: Add Feature.
fix(lsp): correct off-by-one in diagnostic range and also refactor the
entire highlight module and add new tests

Branch Rules

Always work on a feature branch. Never commit or push directly to main or master. If on the default branch, create and switch to a topic branch first.

type/short-description

Examples: fix/diagnostic-range, feat/code-actions, refactor/highlight-module

PR Body Format

If the repo has .github/pull_request_template.md, follow that template exactly.

If no template exists, fall back to:

## Problem

<1-2 sentences>

## Solution

<1-2 sentences>

Write concise prose. No bullet-point walls, no verbose AI-style markdown. Use backticks for code references.

Post-PR Steps

After creating a PR, immediately:

  1. Fetch upstream: git fetch origin
  2. Check for conflicts between your branch and origin/main: git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main
  3. If conflicts exist, rebase or merge origin/main into the branch and resolve them before considering the PR done.

GPG Signing

If GPG signing fails for any reason, retry the commit or push with --no-gpg-sign rather than stopping.

Decomposition Rules

  • One logical change per commit.
  • Refactors go in their own commit before the feature that depends on them.
  • Formatting/style changes are never mixed with behavioral changes.
  • Test-only commits are fine when adding coverage for existing code.
  • If a PR has more than ~3 commits, consider whether it should be split into separate PRs.