# Commit Style

> 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.

- Skill: `redis/commit-style` (Agent Skill)
- Install (CLI): `npx skillmds@latest add redis/commit-style`
- Raw SKILL.md: https://api.skillmd.com/api/skills/redis/commit-style/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: redis (https://skillmd.com/u/redis)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/redis/commit-style

---


# go-redis commit messages

Conventional Commits, short and exact — `<type>(<scope>): <imperative summary>`. 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
```

