Splits uncommitted changes into a small set of logical, single-concern git commits. Use when the user wants to organize changes into logical commits, split a large change into multiple commits, or create a series of conventional commits from the current working tree.
You organize uncommitted changes into atomic, single-concern commits (e.g. one per: config, formatting, behavior, tests, docs) so history stays readable. Follow the workflow below.
git status, git diff, and (if anything is staged) git diff --staged.Assign each change to one concern; one commit per concern, not per file. Use this mapping:
| Concern | Examples | Conventional type |
|---|---|---|
| Config / tooling | ESLint, Prettier, tsconfig, package.json scripts | chore or build |
| Formatting only | Blank lines, quotes, line length | style or chore(style) |
| Feature / behavior | New logic, compose order, numbering | feat or fix |
| Tests | New or moved tests, fixtures | test |
| Docs / rules | AGENTS.md, docs content, .mdc rules, skills | docs |
| Misc / cleanup | Unrelated small fixes | chore or split when feasible |
When a single file has edits that span two concerns, assign it to the dominant concern and note the mix.
Produce an ordered commit plan (scope + message per commit), then the exact commands. Keep commits atomic; order them so history reads logically: config → code → tests → docs.
scripts/shared/*.ts).git add (e.g. git add "**/organize-commits/SKILL.md" or git add scripts/shared/*.ts); git expands globs. Each line: bash\ngit add <paths> && git commit -m "<message>" [ -m "<body>" ] --trailer "Co-authored-by: Cursor <[email protected]>"\n. Always include the trailer. If there are more than 3 commits, put all commands in a single code block (one command per line) and omit the numbered list.When the user requests changes: update the plan (merge, split, reword, or reorder commits), then output a new proposal, command list, and the same closing question.
type(scope): subject. Types: chore, feat, fix, docs, test, style, refactor.-m "<body>" in the command when you need to explain why or what, add context or rationale, or call out breaking changes or migration steps.Project rules may override (e.g. .amazonq/rules/*.md with commit-message guidance).
Example output shape:
| Concern | Files / hunks | Summary / commit message |
|---|---|---|
| Config / tooling | package.json | chore(build): add validate script and @types/node |
| Formatting only | scripts/shared/*.ts | style(formats): ensure blank line after frontmatter in buildRawContent |
| Feature / behavior | scripts/decompose/index.ts | fix(decompose): correct section index and guard empty headings |
| Tests | scripts/decompose/__tests__/placeholder.test.ts | test(decompose): add placeholder resolution tests |
| Docs / rules | apps/docs/content/*.md, .cursor/rules/*.mdc | docs: document validate and sync, add PRIVATE_ env rule |
git add package.json && git commit -m "chore(build): add validate script and @types/node" --trailer "Co-authored-by: Cursor <[email protected]>"```
git add scripts/shared/*.ts && git commit -m "style(formats): ensure blank line after frontmatter in buildRawContent" --trailer "Co-authored-by: Cursor <[email protected]>"```
git add scripts/decompose/index.ts && git commit -m "fix(decompose): correct section index and guard empty headings" --trailer "Co-authored-by: Cursor <[email protected]>"```
git add scripts/decompose/__tests__/placeholder.test.ts && git commit -m "test(decompose): add placeholder resolution tests" --trailer "Co-authored-by: Cursor <[email protected]>"```
git add apps/docs/content/*.md .cursor/rules/*.mdc && git commit -m "docs: document validate and sync, add PRIVATE_ env rule" --trailer "Co-authored-by: Cursor <[email protected]>"```
-m) only when needed.