name: commit description: Create a commit following COMMIT_GUIDELINES.md argument-hint: [optional message hint] allowed-tools: Bash, Read, Grep
Commit Changes
Create a well-formatted commit following the project's COMMIT_GUIDELINES.md.
Instructions
Read COMMIT_GUIDELINES.md for all formatting rules, commit types, and conventions
Check Status
- Run
git statusto see staged and unstaged changes - Run
git diff --cachedto see what will be committed - If nothing staged, ask user what to stage or stage all with
git add -A
- Run
Analyze Changes
- Review the diff to understand what changed
- Identify the appropriate commit type and scope per COMMIT_GUIDELINES.md
- Choose the type based on what the change does, not what file extension it has — use the decision guide below
Write Commit Message per COMMIT_GUIDELINES.md rules
Create Commit using HEREDOC format for proper formatting:
git commit -m "$(cat <<'EOF' <type>(<scope>): <subject> <body> <footer> EOF )"Verify — run
git log -1to check the message
Commit Type Decision Guide
Choose the type based on the purpose of the change, not the file type:
| Type | Use when... | Example |
|---|---|---|
| feat | Adding new user-facing functionality | New CLI command, new flag, new config option |
| fix | Fixing a user-facing bug | Incorrect merge behavior, wrong exit code |
| refactor | Restructuring code without behavior change | Extract helper, rename internal function |
| test | Adding/fixing tests (even if fixing a bug in a test) | New test case, fix flaky test |
| docs | Changing user-facing documentation content | Update README, manpage, ARCHITECTURE.md |
| ci | Changing CI/CD, automation, review tooling, GitHub config | Workflows, Copilot/Claude instructions, skills, .github/ config |
| build | Changing build system or dependencies | go.mod, build scripts, Makefile |
| style | Code formatting only, no logic change | go fmt, whitespace fixes |
| chore | Maintenance that doesn't fit above | Update .gitignore, tool config |
Common pitfalls
.mdfiles are not alwaysdocs— a Markdown file that configures tool behavior (e.g., Copilot instructions, Claude skills, review criteria) isci, notdocsfixis for user-facing bugs only — fixing a CI workflow isci, fixing a test istest, fixing a build script isbuildtestcovers test fixes too — usetest:notfix:when correcting test code
Hard Wrapping Technique
When a guideline specifies a hard line wrap limit, write the text as continuous flowing prose first, then hard wrap at the specified character limit, filling each line as close to the limit as possible.
Example
git commit -m "$(cat <<'EOF'
feat(finish): Add squash merge strategy
Implements --squash flag for finish command that performs a squash merge
instead of a regular merge, creating a single commit with all branch
changes on the target branch.
- Add squash option to merge strategy enum
- Update finish command to handle squash flag
- Add configuration support for default squash behavior
Resolves #42
EOF
)"