| name | collect-commit-info |
| description | Analyze staged files, group by category, and generate conventional commit specs as JSON. |
| allowed-tools | Read, Bash(${CLAUDE_PLUGIN_ROOT}/skills/collect-commit-info/scripts/collect-info.sh:*), Bash(${CLAUDE_PLUGIN_ROOT}/skills/collect-commit-info/scripts/cleanup.sh:*) |
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 codetest- 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.