Feature commits
Skill tranviet0710/agent-skills/.github/skills/feature-commits
Analyze git changes and split them into multiple focused commits grouped by feature. Use when: dividing changes into commits, organizing staged/unstaged changes, writing conventional commits, splitting work into atomic commits, commit best practices, multi-feature commit plan.From its SKILL.md
npx -y skills add tranviet0710/agent-skills --skill feature-commitsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Feature Commits
Split all current git changes into multiple atomic commits, each scoped to one feature or concern, following conventional commits best practices.
When to Use
- You have changes spanning multiple features or concerns in a single working tree
- You want to produce a clean, reviewable commit history before pushing or opening a PR
- You need commit messages that follow the Conventional Commits specification
Procedure
Step 1 — Gather All Changes
Use get_changed_files to retrieve every staged and unstaged file with its diff. Also run git status in the terminal to get a complete picture of new/deleted/renamed files.
Step 2 — Analyze and Group by Feature
Read each diff and assign every file to a logical group. Apply these rules:
| Signal | Rule |
|---|---|
| Same feature folder or module | Group together |
| Only docs / README changes | Separate docs commit |
Only config / tooling files (.gitignore, package.json, CI files) | Separate chore or build commit |
| Style-only changes (whitespace, formatting) | Separate style commit |
| Test files only | Separate test commit |
| Bug fix in one module | Separate fix commit |
| New capability in one module | Separate feat commit |
| Refactor with no behavior change | Separate refactor commit |
If a file touches multiple concerns, assign it to the dominant concern. Flag ambiguous files for user confirmation before committing.
Step 3 — Draft Commit Plan
Present a numbered commit plan in this format:
Proposed commit plan
────────────────────
1. feat(cart-freeship-bar): add free shipping progress bar UI
Files: cart_freeship_bar/main-display-and-settings.html
2. feat(cart-freeship-bar): handle language change event
Files: cart_freeship_bar/event-change-lang.html
3. fix(cart): handle remove-item and clear-cart edge cases
Files: cart_freeship_bar/event-remove-item-from-cart.html
cart_freeship_bar/event-clear-cart.html
4. docs(cart-freeship-bar): update README and project overview
Files: cart_freeship_bar/README.md
cart_freeship_bar/cart_freeship_bar.md
cart_freeship_bar/project-overview.md
Ask the user to confirm, merge, reorder, or rename commits before proceeding.
Step 4 — Execute Commits
For each commit in the approved plan:
- Stage only the files in that group:
git add <file1> <file2> ... - Commit with the drafted message:
git commit -m "<type>(<scope>): <subject>" - Confirm the commit was created (
git log --oneline -1). - Move to the next group.
Never stage files from a different group during a commit step.
Step 5 — Verify
After all commits:
- Run
git status— working tree should be clean (or show only intentionally untracked files). - Run
git log --oneline -<N>(where N = number of commits made) to display the final history for the user to review.
Conventional Commits Quick Reference
<type>(<scope>): <subject> ← max 72 chars
<blank line>
[optional body] ← wrap at 72 chars; explain *why*, not *what*
<blank line>
[optional footer] ← e.g. Closes #123, BREAKING CHANGE: ...
Types:
| Type | When |
|---|---|
feat | New feature or capability |
fix | Bug fix |
docs | Documentation only |
style | Formatting, whitespace, no logic change |
refactor | Code restructure, no behavior change |
test | Adding or updating tests |
chore | Build process, tooling, dependencies |
perf | Performance improvement |
ci | CI/CD configuration |
revert | Reverts a previous commit |
Rules:
- Subject line: imperative mood ("add", not "added" or "adds"), no period at end
- Scope: lowercase, reflects the module or folder (e.g.,
cart,email-collector) - Breaking changes: add
!after type/scope (feat!:) and aBREAKING CHANGE:footer
Decision Points
Mixed concern in one file? → If the diff is small and inseparable, include it in the most relevant group and note it in the commit body.
Unclear feature boundary? → Ask the user: "Should [file X] be part of commit #2 (feat: cart step) or a separate commit?"
Many small files in one folder? → Group into one commit unless they serve clearly distinct purposes.
Untracked new files? → Include them in the commit that introduces the feature they belong to.
What ships with it: 1 file
2.2 KB alongside SKILL.md
- README.md2.2 KB
Gives 3 of the 12 instructions most pr commit review skills give in ~1.1k tokens
Counted across 888 of the 1,342 authors here whose files we hold, read 2026-08-07
- Use conventional commits formathere, and in 127 of 888, across 115 files
- Keep subject line under 72 charactershere, and in 62 of 888, across 48 files
- Delete branches after mergein 51 of 888, across 38 files
- Use imperative mood in subject linein 51 of 888, across 42 files
- Use imperative mood in commit messageshere, and in 44 of 888
- Verify directory is ignored before creating worktreein 43 of 888, across 12 files
- Generate a conventional commit messagein 43 of 888
- Add unignored worktree directories to gitignorein 42 of 888, across 10 files
- Make atomic commitsin 39 of 888, across 27 files
- Run tests before committingin 36 of 888, across 25 files
- Verify clean test baselinein 35 of 888, across 9 files
- Split unrelated changes into separate commitsin 35 of 888, across 30 files
Said here and by no other author read
- run git status to find new deleted and renamed files
- assign every changed file to a logical group
- assign multi-concern files to the dominant concern
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.