> **committing-changes** — chapter 11 of 59 in [bitwarden/ai-plugins](https://skillsdocs.com/bitwarden/ai-plugins).
>
> Book (all chapters, one file): https://skillsdocs.com/bitwarden/ai-plugins.md
> Machine manifest: https://skillsdocs.com/bitwarden/ai-plugins/.well-known/agent-skills/index.json
> Install the book: `npx skills add bitwarden/ai-plugins`
> Upstream: https://github.com/bitwarden/ai-plugins/blob/main/plugins/bitwarden-delivery-tools/skills/committing-changes/SKILL.md @ `main`
> Raw bytes, no header: https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/SKILL.md
> Base for relative paths: https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/
> Licence: Other — https://github.com/bitwarden/ai-plugins
>
> Bundled files (6), referenced from this skill's directory:
>   - `evals/baseline.json` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/baseline.json
>   - `evals/behavior-baseline.json` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/behavior-baseline.json
>   - `evals/behavior-eval.json` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/behavior-eval.json
>   - `evals/README.md` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/README.md
>   - `evals/run_real_eval.py` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/run_real_eval.py
>   - `evals/trigger-eval.json` — https://raw.githubusercontent.com/bitwarden/ai-plugins/main/plugins/bitwarden-delivery-tools/skills/committing-changes/evals/trigger-eval.json
>
> Content © its authors, served unmodified. Takedown: https://github.com/kyleledbetter/skillsdocs/issues/new?labels=takedown&title=Takedown+request

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: committing-changes
description: Git commit conventions and workflow for Bitwarden repositories. Use when committing code, writing commit messages, or preparing changes for commit. Triggered by "commit", "git commit", "commit message", "prepare commit", "stage changes".
---

# Git Commit Conventions

## Branch Check

Resolve the repository's default branch from the remote rather than assuming `main`. If the current branch is the default, ask for a branch name before staging or committing. Offer to suggest one and confirm before switching. If the default branch cannot be resolved, say so and confirm the current branch is intended before staging.

## Commit Message Format

```
[PM-XXXXX] <type>: <imperative summary>

<optional body explaining why, not what>
```

### Rules

1. **Ticket prefix**: Always include `[PM-XXXXX]` matching the Jira ticket
2. **Type keyword**: Read `${CLAUDE_PLUGIN_ROOT}/references/change-type-labels.md` for the full table of conventional commit types and their CI label mappings. **If the type cannot be confidently determined, ask the user.**

### Examples

```
[PM-12345] feat: Add biometric unlock timeout configuration

Users reported confusion about when biometric prompts appear.
This adds a configurable timeout setting to the security preferences.
```

Ambiguous cases — choosing between similar types:

```
# Refactor that also fixes a bug? Use the primary intent:
[PM-12345] fix: Resolve null pointer in vault sync retry logic

# Test-only change:
[PM-12345] test: Add unit tests for biometric timeout edge cases
```

### Followup Commits

Only the first commit on a branch needs the full format (ticket prefix, type keyword, body). Subsequent commits can use a short, descriptive summary with no prefix or body required.

```
Update error handling in login flow
```

---

## Pre-Commit Quality Gate

Before staging, run the `perform-preflight` skill for the full quality gate checklist (tests, lint, security, architecture). Consult the repo's CLAUDE.md for platform-specific build and lint commands.
