Git Conventions

VerifiedSafe

Git commit conventions with enforced scopes, conventional commits, and meaningful commit messages. Use when creating git commits, writing commit messages, staging changes, or any git workflow in this project.

Sby Skills Guide Bot
DevelopmentBeginner
7/25/2026
Claude CodeCursorWindsurfCopilotCodex
#git#conventional-commits#commit-messages#version-control#workflow

Recommended for

Automated summary

This skill enforces a Conventional Commits format for Git commits, with mandatory scopes, a fixed set of types, and precise rules for the subject, body, and footer.

Strengths

  • Closed list of allowed types with an explicit decision rule (feat/fix when behavior changes, refactor/perf when it does not)
  • Predefined application and infrastructure scopes, plus guidance for genuinely cross-cutting changes
  • Concrete subject-line constraints: 72 characters max, lowercase, imperative mood, no trailing period
  • States that the body explains the why and the footer records breaking changes and references

Limitations

  • The scope table is tailored to one specific project (SQLite panels: db, schema, editor, results) and must be rewritten for another repository
  • Covers commit authoring only — no branching strategy, pull requests, or conflict handling
  • Provides no enforcement mechanism such as a hook or commitlint; compliance relies on the agent following instructions
When to use it

Use it whenever you need to stage changes and write commit messages in a project that follows these conventions.

When not to use it

Skip it on repositories that use a different commit message format or whose modules do not match the scopes listed here.

Security analysis

Safe
Quality score85/100

Pure documentation/instruction content about git commit message conventions. No commands are executed, no tools are declared, and there is no network access, file deletion, secret handling, or obfuscated payload. The skill only describes formatting rules an agent should follow when writing commit messages, so execution risk is negligible.

No concerns found

How this analysis is made

Examples

Commit panel changes
Write a commit message for the changes I just made to the results panel horizontal scrolling, then stage and commit them.
Pick the right scope
I refactored code that touches both the schema panel and the database layer — what type and scope should this commit use?
Review a commit message
Check my draft commit message against the project's git conventions and fix anything that breaks the format.

name: git-conventions description: "Git commit conventions with enforced scopes, conventional commits, and meaningful commit messages. Use when creating git commits, writing commit messages, staging changes, or any git workflow in this project. Always follow these conventions for every commit."

Git Commit Conventions

Format: Conventional Commits | Scopes: Required | Breaking changes: ! suffix + footer


Commit Message Format

Every commit message follows this structure:

<type>(<scope>): <subject>

<body>

<footer>

All three parts matter. The subject line gets people's attention, the body tells the story, the footer records breaking changes and references.


Subject Line

feat(editor): add multi-cursor support for batch edits
  • Max 72 characters — truncated in git log --oneline and GitHub UI otherwise
  • Lowercase — no capital first letter after the colon
  • Imperative mood — "add" not "added" or "adds". Read it as: "this commit will add multi-cursor support"
  • No trailing period
  • Be specific — describe what changed, not what you did. "fix query timeout" not "fix bug" or "update code"

Types

Use exactly these types — no others:

| Type | When to use | |------|------------| | feat | New feature or capability for the user | | fix | Bug fix — something was broken, now it works | | refactor | Code restructuring with no behavior change | | perf | Performance improvement with no behavior change | | docs | Documentation only — README, doc comments, specs, plans | | test | Adding or updating tests with no production code change | | build | Build system, dependencies, Cargo.toml changes | | ci | CI/CD pipeline configuration | | chore | Maintenance that doesn't fit above — formatting, linting, tooling config |

Choosing the right type:

  • Changed behavior? → feat or fix
  • Same behavior, different structure? → refactor
  • Same behavior, faster? → perf
  • Only tests changed? → test
  • Only docs changed? → docs

Scopes (Required)

Every commit must include a scope that identifies the area of the codebase affected. Scopes should be short, lowercase, and consistent.

Application scopes:

| Scope | Area | |-------|------| | app | Application state, event loop, top-level orchestration | | db | Database connection, query execution, channels | | schema | Schema tree panel, table/column/index loading | | editor | SQL editor panel, syntax highlighting, buffer management | | results | Results panel, table rendering, column sizing | | detail | Record detail panel, row inspection | | explain | Query explain/analysis panel | | er | ER diagram panel | | pragmas | Pragma viewer/editor panel | | dbinfo | Database info panel | | data-editor | Inline data editing, DML generation, staged changes | | history | Query history storage and search | | theme | Theming, colors, styling | | config | Configuration loading, defaults, file I/O | | cli | CLI argument parsing, entry point | | nav | Navigation, focus management, keybindings | | clipboard | Clipboard integration | | ui | Shared UI components, layout, widgets |

Infrastructure scopes:

| Scope | Area | |-------|------| | deps | Dependency additions, removals, or upgrades | | ci | CI/CD pipeline | | release | Version bumps, changelogs, release prep | | tooling | Dev tooling, linting config, formatters |

When a change spans multiple areas, use the scope of the primary change. If genuinely cross-cutting, use app.

Scopes will evolve as the project grows — add new ones when a new module or area emerges that doesn't fit existing scopes. Keep them short and descriptive.


Body

The body explains why this change exists, not what it does (the diff shows that).

feat(results): add horizontal scrolling for wide result sets

Tables with many columns were clipped at the terminal edge, making it
impossible to inspect columns beyond the visible width. Users had to
resize their terminal or reduce font size as a workaround.

Track a horizontal scroll offset per result set and shift the visible
column window with left/right arrow keys. Column headers scroll in
sync with data rows.

Body guidelines:

  • Wrap at 72 characters — respects git log formatting in terminals
  • Blank line between subject and body
  • First paragraph: the problem or motivation. What was wrong, missing, or needed? Why does this change exist?
  • Second paragraph (optional): the approach. How does this change solve the problem? Only include when the approach isn't obvious from the diff — architectural decisions, tradeoffs made, alternatives considered and rejected.
  • Skip the body only for truly trivial changes: typo fixes, import cleanup, formatting. If you're tempted to skip it, the commit might be too small or you might be underestimating the future reader's need for context.

Breaking Changes

For changes that break the public API or change user-facing behavior in incompatible ways:

  1. Add ! after the scope in the subject line
  2. Add a BREAKING CHANGE: footer explaining what broke and how to migrate
feat(config)!: change config file format from JSON to TOML

The configuration file format has changed to TOML for better readability
and comment support.

BREAKING CHANGE: config.json is no longer read. Rename to config.toml
and convert the syntax. See docs/migration.md for a conversion guide.

Both the ! marker and the footer are required — the ! for quick scanning in git log, the footer for migration details.


What Makes a Good Commit

Atomic commits

Each commit should be a single logical change that compiles and passes tests on its own. If you're writing "and" in your subject line, consider splitting.

Good — one concern per commit:

refactor(db): extract connection pool into dedicated module
feat(db): add connection retry with exponential backoff
test(db): add connection pool timeout tests

Bad — multiple concerns bundled:

feat(db): refactor connection pool and add retry logic and tests

Commit the why, not the what

The diff shows exactly what changed. The commit message should answer: "Six months from now, when someone reads git blame on this line, what context will they need?"


Things to Avoid

  • Vague messages: "fix bug", "update code", "changes", "WIP", "misc"
  • Referencing conversations: "as discussed", "per review feedback", "Claude suggested"
  • Temporal language: "now we do X", "previously this was Y"
  • Implementation narration: "first I changed X, then I updated Y"
  • Emoji in commit messages
  • Ticket/issue numbers in the subject — put them in the footer if needed: Refs: #42

Footer

Footers go after the body, separated by a blank line. Use them for:

BREAKING CHANGE: description of what broke and migration path
Refs: #123, #456
Closes: #789

Only include footers when they carry information. Don't add empty footers.


Commit Workflow

When creating a commit:

  1. Review staged changes — make sure the diff matches a single logical change
  2. Choose the right type — use the type table above
  3. Pick the scope — which area of the codebase is primarily affected?
  4. Write a specific subject — what does this commit do, in imperative mood?
  5. Write the body — why does this change exist? What problem does it solve?
  6. Check for breaking changes — does this change user-facing behavior incompatibly?
  7. Verify the commit compiles — never commit code that doesn't build

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/git-conventions-mrzxurhc/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/git-conventions-mrzxurhc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/git-conventions-mrzxurhc/download' --output '.skill-downloads/git-conventions-mrzxurhc/SKILL.md.part' && mv '.skill-downloads/git-conventions-mrzxurhc/SKILL.md.part' '.skill-downloads/git-conventions-mrzxurhc/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.claude/skills/git-conventions'

Cursor
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.cursor/skills/git-conventions'

Codex
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.agents/skills/git-conventions'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/git-conventions-mrzxurhc'

openskills read 'git-conventions-mrzxurhc'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/git-conventions-mrzxurhc/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills