commit-messages
Skill1 starsChanged 11 months agoMITView on GitHub
Expert in writing concise, factual git commit messages for Drift project without AI fluff. Use when committing code changes, creating releases, or reviewing commit history before PRs.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- lambdakilo/dotclaudetheir own version, first seen Nov 1, 2026
- geronco/commandvault-librarytheir own version, first seen Oct 13, 2026
- glennawatson/CSharpAgentSkillstheir own version, first seen Oct 1, 2026
- fworks-tech/agenthoodtheir own version, first seen Sep 28, 2026
- JoelQ/skillstheir own version, first seen Jul 22, 2026
- yoonation/ai-groundedtheir own version, first seen Jul 22, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- JoelQ/skills★ 44same name
- yoonation/ai-grounded★ 4same name
- fworks-tech/agenthood★ 3same name
- lambdakilo/dotclaude★ 3same name
- glennawatson/CSharpAgentSkills★ 2same name
- lobomfz/skills★ 2same name
- geronco/commandvault-library★ 1same name
- israel7852/claude-code-mastery★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository12 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- code-reviewSkill
- doc-auditSkill
- github-operationsSkill
- issue-writingSkill
- lintingSkill
- pr-writingSkill
- python-basicsSkill
- python-docsSkill
- releaseSkill
- testingSkill
- test-strategySkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 48
No fluff or assumptions
- Distinctive: line 104
Start commits with these verbs:
- Distinctive: line 109
Remove: - Delete code, files, features
- Distinctive: line 167
Don't include context when:
- Distinctive: line 212
Use body only when title isn't enough to explain what changed.
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Commit Messages Skill
Learn how to write concise, factual commit messages that describe what changed, not benefits or AI-generated fluff.
How to Write Commit Messages
Use this format:
<action> <what changed>
[Optional: Why, if explicitly known from issue/user/context]Examples
Good commit messages:
Add default failure messages to all validators
Validators now provide default_failure_message and default_expected_behavior
properties. Makes failure_message and expected_behavior optional in ValidationRule.Fix mypy type errors from optional failure_message
Changed validators to use _get_failure_message() helper instead of accessing
rule.failure_message directly to handle Optional[str] correctly.Add support for custom validator pluginsWhat makes these good:
- States what changed clearly
- Includes technical details when helpful
- Why is explicit (known from code context)
- No fluff or assumptions
What NOT to Do
❌ Too much fluff:
Add default failure messages to validators
This commit adds default failure message support to all validators,
improving the developer experience by making custom messages optional.
This will help users get started faster and reduce boilerplate.
Benefits:
- Less configuration required
- Better developer experience
- Consistent error messages
Testing:
- Added 42 new tests
- All tests passing
- Coverage increasedProblems:
- Lists benefits (speculation)
- Testing details (irrelevant to commit message)
- Repetitive statements
- Way too long
❌ Made-up context:
Fix mypy type errors
This fixes type errors to improve code quality and maintainability.
The changes ensure better type safety across the codebase.Problems:
- "Improve code quality" - generic, assumed benefit
- "Better type safety" - vague, not specific
- Doesn't explain what errors or how fixed
❌ Too vague:
Update validators
Made improvements to the validator system for better functionality.Problems:
- "Update" without specifics
- "Improvements" and "better functionality" say nothing
- Reader has no idea what changed
Action Words to Use
Start commits with these verbs:
- Add - New feature, file, function, test
- Fix - Bug fix, error correction
- Update - Modify existing code
- Remove - Delete code, files, features
- Refactor - Restructure without changing behavior
- Rename - Change names of files, functions, variables
- Move - Relocate code
- Extract - Pull code into separate function/file
- Merge - Combine branches, resolve conflicts
Examples
Add JSON output format for CI/CD integration
Fix circular dependency detection in validator graph
Update frontmatter schema to allow optional fields
Remove deprecated validate_v1() method
Refactor DocumentBundle to use dataclass
Rename ValidationPhase to AnalysisPhase
Move validation logic to validators module
Extract file reading into FileLoader classWhen to Include Context (The "Why")
Include why ONLY when:
1. Explicitly stated in the issue
Fix circular dependency detection per #123
Issue reported that validator dependencies weren't checked for cycles.2. User directly told you
Add JSON output format
User requested JSON output for CI/CD pipeline integration.3. Obvious from the code
Fix off-by-one error in line counting
Line numbers were 1-indexed in output but 0-indexed internally.4. Breaking change explanation
Remove deprecated validate_v1() method
Deprecated in v0.4.0, removed in v0.6.0 per deprecation policy.When NOT to Include Context
Don't include context when:
❌ You're guessing about benefits:
Add default messages # Don't add: "to improve developer experience"❌ You're assuming user intent:
Fix type errors # Don't add: "to improve maintainability"❌ You're adding generic statements:
Update validators # Don't add: "for better code quality"❌ You're listing what you tested:
Add feature # Don't add: "Added 10 tests, all passing"How to Keep Commits Concise
Keep Title Short
Good titles (under 72 characters):
Add default validator failure messages
Fix mypy errors in optional message handling
Update schema validator to support nested objectsToo long:
Add support for default failure messages to all validators in the validation system # 88 chars!How to shorten:
Add default failure messages to validators # 46 charsKeep Body Minimal
Use body only when title isn't enough to explain what changed.
When body helps:
Add config validation on startup
Validates .drift_rules.yaml schema before running analysis.
Catches configuration errors early with clear messages.When body is unnecessary:
Fix typo in README # No body needed - title says it allAvoid Listing Changes
❌ Don't do this:
Update validation system
Changes:
- Added default messages
- Fixed type errors
- Updated tests
- Improved documentation✅ Make separate commits:
Commit 1: Add default validator failure messages
Commit 2: Fix mypy errors in optional message handling
Commit 3: Update validator documentationReal-World Examples from Drift
Adding Features
Add rule_validation for Claude Code rules
Validates .claude/rules/*.md files following same pattern as
skill_validation, agent_validation, command_validation.Fixing Bugs
Fix circular dependency detection for nested deps
Wasn't detecting cycles through transitive dependencies.
Now traverses full dependency graph.Refactoring
Extract phase validation into PhaseValidator class
Moves phase validation logic from Analyzer to dedicated validator.
No behavior changes.Configuration Changes
Update .drift_rules.yaml schema to v2
Adds support for optional phase parameters and resource_patterns.
Backward compatible with v1 schema.Common Scenarios
After fixing linting errors
Fix flake8 errors in validators moduleNot:
Fix linting errors to improve code quality and maintain standards # Too much!After code review feedback
Rename analyze() to run_analysis() per review
Makes purpose clearer when called from CLI.Not:
Refactor code based on review feedback to improve clarity # Vague!After adding tests
Add tests for BlockLineCountValidator edge casesNot:
Add comprehensive test coverage with 15 new tests covering edge cases # Details irrelevant!When implementing from issue
Add argument-hint support to commands per #45
Enables tab-completion hints for command parameters.Quick Reference
Template:
<action> <specific change>
[Optional 1-2 lines explaining what/why if not obvious from title]Good:
- Specific and factual
- 50-72 char title
- Optional 1-3 line body
- Known context only
Bad:
- Generic or vague
- Lists benefits
- Lists testing
- Makes assumptions
- Too long (>5 lines)
Remember: You're writing for developers reading git log. They want to know what changed quickly. Everything else is noise.
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
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.

