git-workflow · git:20260509.49df579 · 2026-05-09 · sha256 3b69c2831f830df3

git-workflow git:20260509.49df579A

Immutable. This exact content is served forever at /api/v1/blob/3b69c2831f830df3.

---
name: git-workflow
title: "Git Workflow"
description: "Git commit conventions, branch naming, and workflow best practices for clean version history. Activate when committing, branching, rebasing, or reviewing git history."
license: Apache-2.0
compatibility: "Requires git. Works with any git-based project."
---

# Git Workflow Skill

## Overview

This skill encodes git commit conventions (Conventional Commits), branch naming rules, and workflow best practices. Activate it when you need to commit changes, name a branch, clean up history, or review git practices in a project.

---

## Instructions

### Commit Message Format

Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification:

```
<type>(<scope>): <short summary>

[optional body]

[optional footer]
```

Types:
- `feat` — new feature
- `fix` — bug fix
- `refactor` — code change that neither fixes a bug nor adds a feature
- `perf` — performance improvement
- `test` — adding or updating tests
- `docs` — documentation only
- `chore` — build process, tooling, dependencies
- `ci` — CI/CD changes

Rules:
- Summary line: max 72 characters, imperative mood ("add" not "added")
- No period at end of summary
- Body: wrap at 72 characters, explain *why* not *what*
- Reference issues in footer: `Fixes #123`, `Closes #456`

### Branch Naming

```
<type>/<short-description>
```

- `feat/user-profile-page`
- `fix/login-redirect-loop`
- `refactor/extract-auth-middleware`
- `chore/upgrade-tokio-1.40`

Use kebab-case. Keep it short but descriptive. Match the commit type.

### Workflow Rules

1. Never commit directly to `main` — always use a branch
2. Keep commits atomic — one logical change per commit
3. Rebase before merging — keep history linear: `git rebase main`
4. Squash WIP commits before opening a PR
5. Tag releases with semantic versioning: `v1.2.3`

---

## Examples

### Good commit message

```
feat(auth): add JWT refresh token rotation

Prevents token reuse after logout by invalidating the previous
refresh token on each use.

Closes #89
```

### Bad commit message → fix it

```
# Bad
fixed stuff
update
WIP
```

```
# Good
fix(api): handle empty response body in error parser

The parser panicked when the server returned a 500 with no body.
Added a fallback to use the status text instead.
```

### Common commands

```bash
# Start a feature
git checkout -b feat/my-feature

# Stage only relevant changes
git add -p

# Amend last commit (before push)
git commit --amend --no-edit

# Interactive rebase to clean up
git rebase -i HEAD~3

# Check what will be committed
git diff --staged

# Tag a release
git tag -a v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
```

---

## References

- [Conventional Commits specification](https://www.conventionalcommits.org/)
- [Semantic Versioning](https://semver.org/)