Guide for writing clear, consistent git commit messages following this repository's conventions

Apache-2.0Auto-check passedDevelopment

Install Commit Message

skills CLI
$ npx skills add EvolvingLMMs-Lab/LLaVA-OneVision-2 --skill commit-message -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install EvolvingLMMs-Lab/LLaVA-OneVision-2 commit-message --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/EvolvingLMMs-Lab/LLaVA-OneVision-2.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.opencode/skills/commit-message .claude/skills/commit-message && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
commit-message
GitHub stars
1.2k
Token cost
~1.9k tokens
SKILL.md length
693 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guide for writing clear, consistent git commit messages following this repository's conventions

  • Works in 6 steps: Subject Line → Body (when needed) → PR-linked Commits → …
  • Tasks that involve Commit messages
  • SKILL.md covers Purpose, Format, Types and Rules, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Commit Message is an agent skill from EvolvingLMMs-Lab/LLaVA-OneVision-2. Guide for writing clear, consistent git commit messages following this repository's conventions

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: opencode

It sits in Development, covering Commit messages. The repository describes itself as: Fully Open Framework for Democratized Multimodal Training. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Commit messages

Example prompts

  • “/commit-message”

Requirements

  • Docker
  • Compatibility (from SKILL.md): opencode

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Subject Line
  2. Body (when needed)
  3. PR-linked Commits
  4. Squash / Reword / Multi-author Rules
  5. Multi-file Changes
  6. What NOT to Write

What it can do on your machine

Read from SKILL.md and the folder at commit 6ef16b1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

Commit Message loads about 1.9k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 693 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~28
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from EvolvingLMMs-Lab/LLaVA-OneVision-2 at commit 6ef16b1, republished under its Apache-2.0 licence (© EvolvingLMMs-Lab). 693 words, ~1,912 tokens.

Download SKILL.mdSave it as .claude/skills/commit-message/SKILL.md (or your agent's skills folder).
name
commit-message
description
Guide for writing clear, consistent git commit messages following this repository's conventions
compatibility
opencode
metadata.domain
workflow
metadata.scope
all-repos

Purpose

Use this skill when writing git commit messages. It enforces a formal Conventional Commits style suitable for open-source collaboration and future changelog generation, while still keeping messages aligned with this repository's tone.


Format

<type>: <subject>
  • Default style: formal Conventional Commits (feat:, fix:, docs:, test:, chore:, etc.)
  • No scope parentheses by default — this repo usually does not use type(scope): style; add a scope only if the user explicitly asks
  • Subject: imperative mood, lowercase first word, no trailing period, max ~72 chars
  • Body (optional): blank line after subject, wrap at 72 chars, explain why not what

Types

TypeWhen to useExample
featNew user-visible feature or capabilityfeat: add packed SFT dataset assembly workflow
fixBug fixfix: prevent cross-sample attention leakage in packed runs
docsDocumentation, README, guides, skills, comments-only docsdocs: explain cu_lengths attention boundaries
testTests, fixtures, consistency checks, validation scriptstest: add HF/Megatron consistency checks for PP=2
refactorCode restructuring, no behavior changerefactor: move patch position block layout into task encoder
choreMaintenance, internal cleanup, generated metadata, repo hygienechore: remove internal-only skill references
perfPerformance improvement without behavior changeperf: reduce token length scan overhead
buildBuild system, dependencies, Docker, packagingbuild: update flash attention to v2.7.0
ciCI/CD configuration and automationci: add packed dataset smoke test job
styleFormatting-only changes, no code behavior changestyle: format offline packing scripts

Notes:

  • feat and fix are strongly preferred for code changes
  • Use docs for skill files under .opencode/skills/
  • Avoid legacy bare messages like updated, missing _extra_state, or add OV2 SP unless the user explicitly asks to preserve old repo style
  • Revert and Merge are generated by git — don't manually write these types

Rules

1. Subject Line
  • Imperative mood: "add", "fix", "refactor" — NOT "added", "fixes", "refactoring"
  • Lowercase after type prefix: feat: add ... not feat: Add ...
  • No period at the end
  • Max 72 characters (hard limit for git log formatting)
  • What changed, not how: fix: correct rotary_base override in 8B config not fix: changed value from 1000000 to 8000000
2. Body (when needed)

Use a body when:

  • The change is non-obvious (e.g., subtle bug fix, architectural decision)
  • There are constraints or caveats others should know
  • The PR has multiple commits and each needs context
feat: add YaRN RoPE scaling to Megatron training path

Wire YarnRotaryEmbedding into QwenModel when --rope-type=yarn is set.
All default parameters match the official Qwen3-8B config.

Affected files:
- qwen_model.py: construct YarnRotaryEmbedding, return (emb, mscale) tuple
- attention.py: extract mscale before RoPE application
- arguments.py: add 7 CLI args for YaRN configuration
3. PR-linked Commits

When a commit will be part of a PR (most cases in this repo):

  • The commit message should be self-contained — don't rely on PR description
  • Reference issue numbers if applicable: fix: loading dataloader (#121)
  • The (#N) suffix is added by GitHub on squash-merge — don't add it manually in local commits
Show full SKILL.md (274 more words)Show less
4. Squash / Reword / Multi-author Rules

When cleaning up commit history before a PR:

  • Prefer squashing small fixup commits by day: one coherent commit per day of work, unless a day contains clearly unrelated changes that should stay separate.
  • If a squashed commit includes work from multiple authors, the final commit message must preserve every contributor with Co-authored-by trailers.
  • Use each contributor's canonical Git name and email from the original commits.
  • Rewording a commit message normally preserves the original Author; do not use --reset-author unless the user explicitly requests it.
  • If the branch was already pushed, any squash/reword rewrites history and must be pushed with --force-with-lease, never plain --force.

Example multi-author squash commit:

text
docs: explain distributed offline packing workflow

Group one day of packing notes into a single guide so the PR history stays
reviewable while preserving each contributor from the original commits.

Co-authored-by: Alice Zhang <alice@example.com>
Co-authored-by: Bob Chen <bob@example.com>
5. Multi-file Changes

For commits touching many files, the subject should describe the intent, not list files:

# GOOD
feat: add YaRN RoPE support to QwenModel

# BAD
update qwen_model.py, attention.py, arguments.py, provider.py, config.py, model.py, mid_training.sh
6. What NOT to Write
  • No generic messages: "update code", "fix bug", "misc changes"
  • No WIP commits to main: "wip", "temp", "test" (use branches)
  • No file lists as subject: "update foo.py and bar.py"
  • No past tense: "fixed", "added", "updated" — use imperative
  • No emoji unless the repo uses them (this repo does not)

Decision Tree

Is it a new capability?
  YES → feat: <what it enables>
  NO ↓

Is it a bug fix?
  YES → fix: <what was broken>
  NO ↓

Is it restructuring without behavior change?
  YES → refactor: <what was reorganized>
  NO ↓

Is it adding a new file/script/example?
  YES → docs: if documentation/skill, test: if test fixture, chore: if repo maintenance, feat: if user-visible capability
  NO ↓

Is it a config/dependency/version update?
  YES → build: for dependencies/build/Docker, ci: for CI, chore: for general maintenance
  NO ↓

Is it trivial (typo, comment, formatting)?
  YES → docs: for documentation typo, style: for formatting-only code changes
  NO → pick the closest type

Examples from This Repository

These are real commits — use them as reference for tone and length:

fix loading dataloader (#121)
missing _extra_state (#117)
Refactor model consistency checks and enhance encoder loading (#120)
add OV2 SP (#112)
update 30ba3b (#97)
feat: add MoE merge support for Qwen3-30B-A3B (#95)
refactor: move patch position block layout into task encoder (#89)
dev assert (#81)

Prefer the formal Conventional Commits shape for new local commits, even though older history contains mixed styles.

Better current-style examples:

feat: add packed SFT dataset assembly workflow
fix: prevent cross-sample attention leakage in packed runs
docs: explain cu_lengths attention boundaries
test: add HF/Megatron consistency checks for PP=2
chore: remove internal-only skill references
refactor: simplify Megatron checkpoint layout detection
build: update flash attention to v2.7.0

Quick Template

For most changes, just fill in:

<type>: <imperative verb> <what> [in/for/to <where>]

Examples:

  • feat: add custom pipeline layer splitting for PP>2
  • fix: correct rotary_base override for 8B config
  • docs: document distributed offline packing workflow
  • test: add OneVision2 consistency fixture for PP=2
  • chore: remove internal-only skill references
  • refactor: extract ViT encoder into standalone module
  • build: update flash attention to v2.7.0

© EvolvingLMMs-Lab, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .opencode/skills/commit-message of EvolvingLMMs-Lab/LLaVA-OneVision-2.

Open the folder on GitHubat commit 6ef16b1

Compare with similar skills

Commit Message next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Commit Message compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Commit Message this skillEvolvingLMMs-Lab/LLaVA-OneVision-21.2k—~1.9kAutomated safety check: PassApache-2.0
Contextual Commit Messagesyamadashy/repomix29k1 repos~2.7kAutomated safety check: PassMIT
React Router Release Notes Prepremix-run/react-router57k—~1.1kAutomated safety check: PassMIT
Caveman Commitvishiri/fantasia-archive40913 repos~642Automated safety check: PassGPL-3.0
PR Finalize Reviewmicrosoft/garnet12k—~3.1kAutomated safety check: PassMIT
ToolJet Multi-Repo CommitToolJet/ToolJet41k—~1.3kAutomated safety check: PassAGPL-3.0

Similar skills

  • Writes Conventional Commits whose bodies carry action lines recording the intent, decisions and constraints behind a change, not only what changed.

    29k GitHub starsUsed in 1 repo~2.7k tokens
    DevelopmentAuto-check passed
  • React Router Release Notes Prep

    remix-run/react-router

    Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.

    57k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Caveman Commit

    vishiri/fantasia-archive

    Ultra-compressed commit message generator. An agent skill from vishiri/fantasia-archive.

    409 GitHub starsUsed in 13 repos~642 tokens
    DevelopmentAuto-check passed
  • PR Finalize Review

    microsoft/garnet

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for Garnet best practices, reporting findings without posting them.

    12k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.

    41k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    103k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes

More from EvolvingLMMs-Lab/LLaVA-OneVision-2

All 8 skills in this repo
  • Cu Lengths Attention Flow

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for understanding how culengths controls attention behavior across ViT and LLM stages, and how patchpositions scope differs between the two

    1.2k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Distributed Offline Packing

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for running offlinepacking/autopipe.sh across multiple nodes to produce padding-free packed WebDataset shards for SFT, with Energon Metadataset assembly

    1.2k GitHub stars~2.6k tokensUpdated yesterday
    Auto-check passed
  • Length Pool Sort Dataset

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for understanding LengthPoolSortDataset cross-rank length synchronization mechanism in multi-GPU training

    1.2k GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Llava Onevision2 Consistency

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for running and interpreting LLaVA-OneVision2 HF vs Megatron consistency checks across TP and PP settings

    1.2k GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed
  • Offline Packing Env Vars

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for the OFFLINEPACKINGBMR and OFFLINEPACKEDDATA environment variables that control LLaVA-OneVision2 training-side packing — what each gate does, why both must be enabled together…

    1.2k GitHub stars~3.9k tokensUpdated yesterday
    Auto-check passed
  • Merge Ov2

    EvolvingLMMs-Lab/LLaVA-OneVision-2

    Bilingual guide for merging ViT + LLM into LlavaOnevision2 HF checkpoint and validating weight/inference consistency

    1.2k GitHub stars~7.6k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Commit Message

What does Commit Message do?

Guide for writing clear, consistent git commit messages following this repository's conventions. Commit Message is an agent skill from EvolvingLMMs-Lab/LLaVA-OneVision-2.

When should I use Commit Message?

Commit Message fits situations like: tasks that involve Commit messages.

How do I install Commit Message in Claude Code?

Run `npx skills add EvolvingLMMs-Lab/LLaVA-OneVision-2 --skill commit-message -a claude-code`. Or copy the skill folder (.opencode/skills/commit-message in EvolvingLMMs-Lab/LLaVA-OneVision-2) into .claude/skills/commit-message in your project. Claude Code loads it when a task matches its description.

How do I install Commit Message in Codex?

Run `npx skills add EvolvingLMMs-Lab/LLaVA-OneVision-2 --skill commit-message -a codex`. Or copy the skill folder (.opencode/skills/commit-message in EvolvingLMMs-Lab/LLaVA-OneVision-2) into .agents/skills/commit-message in your project. Codex loads it when a task matches its description.

Can I use Commit Message in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EvolvingLMMs-Lab/LLaVA-OneVision-2 --skill commit-message -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/commit-message, .gemini/skills/commit-message, .github/skills/commit-message and .opencode/skills/commit-message in your project.

What does Commit Message need to run?

SKILL.md names no scripts, command-line tools or credentials: Commit Message is instructions for the agent only. Our summary lists: Docker. Compatibility (from SKILL.md): opencode.

Does Commit Message access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Commit Message safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Commit Message use?

Commit Message is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Commit Message use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Commit Message?

Skills that share tags, products or a category with Commit Message: Contextual Commit Messages (yamadashy/repomix, 29k stars), React Router Release Notes Prep (remix-run/react-router, 57k stars), Caveman Commit (vishiri/fantasia-archive, 409 stars) and PR Finalize Review (microsoft/garnet, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Commit Message?

EvolvingLMMs-Lab (a GitHub organization) maintains it in EvolvingLMMs-Lab/LLaVA-OneVision-2, which has 1,216 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 7, 2026.

Source: EvolvingLMMs-Lab/LLaVA-OneVision-2 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.