tractor/.claude/skills/commit-msg/SKILL.md

2.7 KiB

When generating commit messages, always follow this process:

  1. Check for staged changes: if git diff --staged is empty, STOP and tell the user “nothing is staged!” with a reminder to git add before invoking this skill.

  2. Gather context from the staged diff and recent history:

    • Staged changes: !git diff --staged --stat
    • Recent commits: !git log --oneline -5
  3. Analyze the diff: understand what files changed and the nature of the changes (new feature, bug fix, refactor, etc.)

  4. Write the commit message following these rules:

Use the accompanying style guide: - See style-guide-reference.md for detailed analysis of past commits in this repo.

Subject Line Format: - Present tense verbs: Add, Drop, Fix, Use, Move, Adjust, etc. - Target 50 chars (hard max: 67) - Backticks around ALL code elements (classes, functions, modules, vars) - Specific about what changed

Body Format (optional - keep simple if warranted): - Max 67 char line length - Use - bullets for lists - Section markers: Also, Deats, Other, Further, - Abbreviations: msg, bg, ctx, impl, mod, obvi, tn, fn, bc, var, prolly - Casual yet technically precise tone - Never write lines with only whitespace

Common Opening Patterns: - New features: “Add feature to module” - Removals: “Drop attr from class” - Bug fixes: “Fix issue in function” - Code moves: “Move thing to new_location” - Adoption: “Use new_tool for task” - Minor tweaks: “Adjust behavior in component

  1. Write to TWO files:
    • .claude/<timestamp>_<hash>_commit_msg.md
      • with <timestamp> from date -u +%Y%m%dT%H%M%SZ or similar filesystem-safe format.
      • and <hash> from git log -1 --format=%h first 7 chars.
    • .claude/git_commit_msg_LATEST.md (overwrite)
  2. Always include credit footer:

When no part of the patch was written by claude,

(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code

when some or all of the patch was written by claude instead use,

(this patch was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code

Keep it concise. Match the tone of recent commits. For simple changes, use subject line only.