mcpField
C
commit-detection

commit-detection

github.com/fusengineDevelopment3448 installsUpdated 2w ago
Repository

About commit-detection

A skill for inferring conventional commit types and scope from staged and unstaged Git changes. It helps contributors route changes to an appropriate commit command; it detects and suggests, but does not create the commit.

Key features

  1. 01Categorizes changed files by pattern
  2. 02Uses diff keywords to classify changes
  3. 03Suggests scope from changed directories
  4. 04Applies rules for conventional commit types
  5. 05Routes to matching commit commands

Use cases

  1. 01Choose a commit type for documentation-only changes
  2. 02Classify a bug fix from changed files and diff text
  3. 03Suggest a scope for changes under a source directory

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fusengine/agents --skill commit-detection

After installing, type/commit-detectionin Claude Code to confirm it loaded.

Details

From the project README
Detects the optimal conventional commit type (feat/fix/docs/style/refactor/perf/test/build/ci/chore) from staged and unstaged git changes, using file-pattern categorization (docs/test/config/ci/build/src) plus diff-keyword heuristics ("fix", "bug", "optimize", etc.), and derives a scope suggestion from the primary changed directory (e.g. `src/api/auth.ts` → `auth`). Covers the full detection algorithm, the rule cascade, scope extraction, and worked examples. Does not perform the commit itself — routes to the matching `/commit-pro:` command, or to the `commit` skill for full smart analysis when no rule matches cleanly.

Commit Type Detection Skill

Expert knowledge for detecting the optimal conventional commit type.

Detection Algorithm

Step 1: Gather Data
# Get modified files
git diff --name-only
git diff --staged --name-only

# Get change statistics
git diff --stat
git diff --staged --stat

# Check for keywords in diff
git diff | grep -i "fix\|bug\|error" | head -5
Step 2: Categorize Files
CategoryFile Patterns
docs*.md, *.txt, *.rst, README*, CHANGELOG*
test*.test.*, *.spec.*, __tests__/*, test/*
config*.json, *.yml, *.yaml, *.toml, .*rc
ci.github/*, .gitlab-ci.yml, Jenkinsfile
buildpackage.json, Makefile, webpack.*, vite.*
styleOnly whitespace, formatting changes
src*.ts, *.js, *.py, *.go, *.rs, etc.
Step 3: Apply Rules
IF only docs files changed:
  → docs

IF only test files changed:
  → test

IF only config/build files changed:
  → chore

IF only CI files changed:
  → ci

IF diff contains "fix", "bug", "error", "issue", "resolve":
  → fix

IF new files added with business logic:
  → feat

IF files renamed/moved without logic change:
  → refactor

IF performance keywords ("optimize", "perf", "speed", "cache"):
  → perf

IF formatting only (whitespace, semicolons):
  → style

DEFAULT:
  → Use /commit-pro:commit for smart analysis
Step 4: Determine Scope

Extract scope from primary directory:

src/components/Button.tsx → ui or button
src/api/auth.ts → auth
lib/utils/date.ts → utils
server/routes/user.ts → user

Quick Reference

TypeWhenVersion Bump
featNew functionalityPATCH
fixBug correctionPATCH
docsDocumentation onlyPATCH
styleFormatting onlyPATCH
refactorCode restructurePATCH
perfPerformancePATCH
testTests onlyPATCH
buildBuild/depsPATCH
ciCI/CD configPATCH
choreMaintenancePATCH

MINOR/MAJOR bumps are manual user decisions, never automatic.

Post-Commit Actions

See the post-commit skill for universal CHANGELOG, version bump, and tag logic (works for all repos).

Examples

Example 1: Only README changed

Files: README.md
→ /commit-pro:docs

Example 2: New component + test

Files: src/Button.tsx, src/Button.test.tsx
→ /commit-pro:feat (primary is new feature)

Example 3: Fix in existing file

Files: src/api/auth.ts
Diff contains: "fix login bug"
→ /commit-pro:fix

Comments

Markdown supported