agentleFS
jackchukajackchuka/skills/git-conventional-commit/SKILL.md

git-conventional-commit

Skill15 starsChanged 9 days agoMITView on GitHub

Create git commits following the Conventional Commits v1.0.0 specification (conventionalcommits.org). Use when the user asks to commit changes, says "/conventional-commit", or wants a well-structured commit message. Triggers on requests like "commit this", "commit my changes", "create a commit", or any git commit workflow. Analyzes staged/unstaged changes and produces compliant commit messages with proper type, scope, description, body, and footers.

  • Reads credentials

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 9 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈9

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Create git commits that follow the Conventional Commits v1.0.0 specification.

    line 17
  2. Distinctive:

    Run these in parallel:

    line 23
  3. Distinctive:

    Check for sensitive files (.env, credentials, secrets) and warn before staging

    line 37
  4. Distinctive:

    Never use git add -A or git add .

    line 42
  5. Distinctive:

    If unstaged changes exist that belong to a different logical change, leave them unstaged

    line 43
  6. Distinctive:

    No period at end

    line 91
  7. Distinctive:

    Use when the description alone is insufficient

    line 99
  8. Very specific:

    Use - instead of spaces in tokens (except BREAKING CHANGE)

    line 105
  9. Distinctive:

    Use a HEREDOC for multi-line messages:

    line 124
  10. Distinctive:

    Never push to remote unless the user explicitly asks.

    line 149

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Conventional Commit

Create git commits that follow the Conventional Commits v1.0.0 specification.

Workflow

1. Gather context

Run these in parallel:

git status
git diff --cached
git diff
git log --oneline -10

2. Analyze changes

  • Identify what changed (files, functions, features, fixes)
  • Identify why it changed (bug fix, new feature, refactor, etc.)
  • Group related changes — if changes are unrelated, suggest splitting into multiple commits
  • Check for sensitive files (.env, credentials, secrets) and warn before staging

3. Stage changes

  • Stage only related changes with git add <specific-files>
  • Never use git add -A or git add . without confirming with the user
  • If unstaged changes exist that belong to a different logical change, leave them unstaged

4. Write the commit message

Format per Conventional Commits v1.0.0:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Type (required)

Pick the most specific type:

TypeWhen to use
featNew feature or capability (correlates with SemVer MINOR)
fixBug fix (correlates with SemVer PATCH)
docsDocumentation only
styleFormatting, whitespace, semicolons — no logic change
refactorCode change that neither fixes a bug nor adds a feature
perfPerformance improvement
testAdding or correcting tests
buildBuild system or external dependencies (e.g., go.mod, package.json)
ciCI configuration and scripts
choreMaintenance tasks that don't modify src or test files
revertReverts a previous commit

Scope (optional)

A noun in parentheses describing the section of the codebase:

feat(auth): add OAuth2 login flow
fix(parser): handle empty input gracefully
docs(readme): update installation steps

Derive scope from: package name, module, directory, or feature area.

Description (required)

  • Imperative mood: "add" not "added" or "adds"
  • Lowercase first letter
  • No period at end
  • Max ~50 characters for the entire first line (type + scope + description)

Body (optional)

  • Separate from description with a blank line
  • Explain what and why, not how
  • Wrap at 72 characters
  • Use when the description alone is insufficient

Footer (optional)

  • Separate from body with a blank line
  • Format: token: value or token #value
  • Use - instead of spaces in tokens (except BREAKING CHANGE)

Common footers:

  • BREAKING CHANGE: <description> — breaking API change (SemVer MAJOR)
  • Refs: #123 — reference issues
  • Reviewed-by: Name <email>
  • Co-authored-by: Name <email>

Breaking changes

Indicate with either:

  1. An exclamation mark after type/scope, e.g. feat(api)!: change response format
  2. A BREAKING CHANGE: footer with explanation
  3. Both for maximum clarity

5. Create the commit

Use a HEREDOC for multi-line messages:

git commit -m "$(cat <<'EOF'
feat(auth): add OAuth2 login flow

Implement OAuth2 authorization code flow with PKCE for
secure browser-based authentication. Replaces the legacy
session-based auth which had CSRF vulnerabilities.

BREAKING CHANGE: /api/login now returns a JWT instead of
setting a session cookie
Refs: #342
EOF
)"

For single-line commits:

git commit -m "fix(parser): handle empty input without panic"

6. Do NOT push

Never push to remote unless the user explicitly asks.

Examples

Simple fix:

fix: resolve null pointer in user lookup

Scoped feature:

feat(api): add pagination to list endpoints

Multi-line with breaking change:

feat(config)!: switch to YAML configuration format

Migrate from JSON to YAML for all configuration files.
Existing JSON configs are no longer supported.

BREAKING CHANGE: configuration files must be in YAML format
Refs: #891

Documentation:

docs: correct typos in contributing guide

Multiple footers:

fix(db): prevent connection pool exhaustion

Add connection timeout and max idle settings to prevent
pool exhaustion under high load.

Refs: #456
Reviewed-by: Alice <alice@example.com>

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.