What I do
- Intelligently detect and group related changes
- Auto-generate descriptive branch names from changes
- Streamlined workflow: scan → branch → commit → push → PR with fewer prompts
When to Use
Use this when you want a faster, smarter git workflow that groups changes logically and reduces manual confirmation overhead.
Workflow Steps
1. Smart Detection & Grouping
Run in parallel:
git status - check what's changed
git diff --stat - see file modification summary
git diff --name-only - list changed files only
git diff --staged --stat - see what's already staged
Analyze changes to group them logically:
- Files in the same module/directory → likely related
- Files that were modified together in recent edits → likely related
- New files that complement each other → likely related
Present grouped changes in a clear format, e.g.:
📁 Group 1: UI Components
- src/components/Button.tsx (modified)
- src/components/Button.test.tsx (modified)
📁 Group 2: API Layer
- src/api/client.ts (new)
- src/api/types.ts (modified)
2. Auto Branch Name Generation
Generate branch name from dominant change pattern:
- Use format:
<type>/<short-description>
- Types:
feature, fix, refactor, docs, test, chore
- Derive description from most significant changed file/feature
- Convert to kebab-case, max 50 chars
- Examples:
feature/add-user-auth (from auth-related files)
fix/login-validation (from validation changes)
refactor/api-cleanup (from API refactoring)
Show the proposed branch name and ask for one-word confirmation (or type alternative).
3. Streamlined Branch & Commit
- If not on main/master: check if current branch matches proposed name
- If yes: stay on it
- If no: ask to switch or create new
- Create branch only after validating the branch name, then use
git checkout -b "$branch_name"
- Stage explicit pathspecs only:
git add -- path/to/file ...
- If file paths are generated, keep them NUL-delimited (
git diff -z --name-only) and pass them as pathspec arguments.
- Never concatenate untrusted filenames into a shell command and never run the placeholder text literally.
- Auto-generate commit message from changes:
- First line:
<type>: <short description> (max 72 chars)
- Body: grouped file changes with brief descriptions
- Commit with generated message, show preview first
- Ask for one-word confirmation to proceed
4. Push & Optional PR
- After commit, ask: "Push to remote? (yes/no/abort)"
- If yes:
git push -u origin <branch-name>
- Then ask: "Create PR? (yes/no)"
- If yes:
- Check remote:
git remote -v
- If fork: use fork's remote (e.g.,
mskadu/repo-name)
- Auto-generate PR description from commit messages
- Use
gh pr create with:
- Title from branch name
- Body: summary of changes + file breakdown + follow-up notes
Key Rules
- Group related files automatically, but allow user to adjust
- Generate branch names from actual changes, don't ask user to name them
- Reduce confirmations: ask for one-word answers or single confirmation points
- Never commit secrets, credentials, or large binaries
- Check if GitHub repo exists before PR creation
- Skip PR step if user says "no" at any point
- If branch already exists with changes, offer to amend or add new commit
Limitations
- Do not bypass repository-specific maintainer rules, branch policies, or required review gates.
- Confirm destructive or publishing actions explicitly; this skill should streamline routine Git flow, not remove accountability.
1---2name: smart-git-automation3description: Smart change detection, auto branch naming, and streamlined commit/PR workflow4license: MIT5---67## What I do8- Intelligently detect and group related changes9- Auto-generate descriptive branch names from changes10- Streamlined workflow: scan → branch → commit → push → PR with fewer prompts1112## When to Use13Use this when you want a faster, smarter git workflow that groups changes logically and reduces manual confirmation overhead.1415## Workflow Steps1617### 1. Smart Detection & Grouping18Run in parallel:19- `git status` - check what's changed20- `git diff --stat` - see file modification summary21- `git diff --name-only` - list changed files only22- `git diff --staged --stat` - see what's already staged2324Analyze changes to group them logically:25- Files in the same module/directory → likely related26- Files that were modified together in recent edits → likely related27- New files that complement each other → likely related2829Present grouped changes in a clear format, e.g.:30```31📁 Group 1: UI Components32 - src/components/Button.tsx (modified)33 - src/components/Button.test.tsx (modified)3435📁 Group 2: API Layer36 - src/api/client.ts (new)37 - src/api/types.ts (modified)38```3940### 2. Auto Branch Name Generation41Generate branch name from dominant change pattern:42- Use format: `<type>/<short-description>`43- Types: `feature`, `fix`, `refactor`, `docs`, `test`, `chore`44- Derive description from most significant changed file/feature45- Convert to kebab-case, max 50 chars46- Examples:47 - `feature/add-user-auth` (from auth-related files)48 - `fix/login-validation` (from validation changes)49 - `refactor/api-cleanup` (from API refactoring)5051Show the proposed branch name and ask for one-word confirmation (or type alternative).5253### 3. Streamlined Branch & Commit54- If not on main/master: check if current branch matches proposed name55 - If yes: stay on it56 - If no: ask to switch or create new57- Create branch only after validating the branch name, then use `git checkout -b "$branch_name"`58- Stage explicit pathspecs only: `git add -- path/to/file ...`59 - If file paths are generated, keep them NUL-delimited (`git diff -z --name-only`) and pass them as pathspec arguments.60 - Never concatenate untrusted filenames into a shell command and never run the placeholder text literally.61- Auto-generate commit message from changes:62 - First line: `<type>: <short description>` (max 72 chars)63 - Body: grouped file changes with brief descriptions64- Commit with generated message, show preview first65- Ask for one-word confirmation to proceed6667### 4. Push & Optional PR68- After commit, ask: "Push to remote? (yes/no/abort)"69- If yes: `git push -u origin <branch-name>`70- Then ask: "Create PR? (yes/no)"71- If yes:72 - Check remote: `git remote -v`73 - If fork: use fork's remote (e.g., `mskadu/repo-name`)74 - Auto-generate PR description from commit messages75 - Use `gh pr create` with:76 - Title from branch name77 - Body: summary of changes + file breakdown + follow-up notes7879## Key Rules80- Group related files automatically, but allow user to adjust81- Generate branch names from actual changes, don't ask user to name them82- Reduce confirmations: ask for one-word answers or single confirmation points83- Never commit secrets, credentials, or large binaries84- Check if GitHub repo exists before PR creation85- Skip PR step if user says "no" at any point86- If branch already exists with changes, offer to amend or add new commit8788## Limitations8990- Do not bypass repository-specific maintainer rules, branch policies, or required review gates.91- Confirm destructive or publishing actions explicitly; this skill should streamline routine Git flow, not remove accountability.