Claude-skill-registry collect-commit-info
Analyze staged files, group by category, and generate conventional commit specs as JSON.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/collect-commit-info" ~/.claude/skills/majiayu000-claude-skill-registry-collect-commit-info && rm -rf "$T"
manifest:
skills/data/collect-commit-info/SKILL.mdsource content
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 |
|---|---|---|
| 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:
- Dependencies (package.json, lock files)deps
- CI/CD (.github/*)ci
- Configuration (*.yml, *.toml, rc files)config
- Source codesource
- Tests (_test., .test., .spec.)test
- Documentation (.md, docs/)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.