This skill analyzes staged git files and returns commit specifications as JSON. It:
- •Collects staged file metadata via script
- •Reads diff content to understand changes
- •Groups files by category (deps, ci, config, source, test, docs)
- •Generates conventional commit messages for each group
- •Returns JSON specs for the caller to execute
Arguments
| Arg | Default | Description |
|---|---|---|
--lang | context | Message language (conversation context → system locale → en) |
Output Contract
This skill ALWAYS returns JSON. The caller executes git commands based on this output.
Success:
{
"commits": [
{"message": "type(scope): subject\n\nBody", "files": ["file1", "file2"]}
],
"summary": {"total_commits": 1, "total_files": 2}
}
Error:
{"error": "description", "error_code": "CODE"}
Workflow
Step 1: Collect file info
${CLAUDE_PLUGIN_ROOT}/skills/collect-commit-info/scripts/collect-info.sh --lang <code>
Script returns JSON with temp_dir, files array (with categories), and paths.diff_content.
On error JSON → return it immediately and stop.
Step 2: Read diff content
Read the file at paths.diff_content to understand what changed.
Step 3: Group files by category
Group files from the files array. Commit order:
- •
deps- Dependencies (package.json, lock files) - •
ci- CI/CD (.github/*) - •
config- Configuration (*.yml, *.toml, rc files) - •
source- Source code - •
test- Tests (_test., .test., .spec.) - •
docs- Documentation (.md, docs/)
Step 4: Generate commit messages
For each group, create a conventional commit message:
type(scope): imperative subject (max 50 chars) Optional body explaining what and why.
Type by category:
| Category | Type |
|---|---|
| deps | chore |
| ci | ci |
| config | chore |
| source | feat/fix/refactor (analyze diff) |
| test | test |
| docs | docs |
For source files, analyze diff to determine type:
- •New functionality →
feat - •Bug fixes, error handling →
fix - •Restructuring, cleanup →
refactor
Scope: Derive from paths (e.g., src/auth/* → auth)
Language: Use lang.effective from script output. If conversation context indicates a preferred language, use that instead.
Step 5: Cleanup and return
${CLAUDE_PLUGIN_ROOT}/skills/collect-commit-info/scripts/cleanup.sh <temp_dir>
Return the JSON commit specs.