--- name: commit-style description: Use when writing a commit message or opening a PR in the go-redis repo — covers the Conventional-Commit format, the repo's scope vocabulary (pool, conn, sentinel, command, …), breaking-change syntax, and the rule that NO AI-attribution trailer is added. --- # go-redis commit messages Conventional Commits, short and exact — `(): `. Subject ≤50 chars (hard cap 72), imperative mood ("add", not "added"), no trailing period. Body only when the *why* isn't obvious from the diff (breaking change, security fix, migration, non-obvious rationale); wrap at 72, bullets `-`. State why, not what — the diff says what. - **Types:** `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore` (also `build`, `ci`, `style`, `revert`). - **Scope** = the subsystem touched, lowercase: `pool`, `conn`, `pubsub`, `sentinel`, `retry`, `command`/`cmd`, `vectorset`, `otel`, `streams`, `push`, `deps`, `ci`, `tests`, `docs`. Omit scope only for genuinely cross-cutting changes. - **Breaking change:** `feat(scope)!: ...` plus a `BREAKING CHANGE:` body line. - **Issues/PRs:** reference at the end — `Closes #42`, `Refs #17`. ## No attribution trailer Do **not** add `Co-Authored-By: Claude …`, "Generated with Claude Code", or any AI-attribution line to commits or PR bodies in this repo. This overrides both the default harness behavior (which appends such trailers) and any other commit skill. ## Examples ``` fix(pool): release wantConn slot on dial timeout The waiter stayed queued after the dial deadline fired, leaking a slot per timed-out connection under load. Closes #3812 ``` ``` feat(streams): support explicit LIMIT 0 in XTRIM trimming ```