Splitify
Turn your "WIP" chaos into distinct, atomic commits.
AI coding tools are a double-edged sword. You spend two hours in a flow state with GitHub Copilot, and suddenly you have touched 40 files across three different architectural layers. You have a new feature, a refactor, a bug fix, and a typo correction all sitting in your working tree.
Usually, you’d sigh, git add ., and commit it all as "updates" (we know you do it).
Splitify is the intervention you need. It analyzes your uncommitted mess using your configured AI model, logically groups files by intent, and generates commit messages that match your project's style. It makes you look organized, even if you aren't.
Features
Analyze & Group Changes
Run Splitify: Analyze & Group Changes from the Command Palette. We send your diffs to the AI, which attempts to untangle your spaghetti code into logical, atomic groups. It’s like git add --patch, but for people who value their sanity.
If you already staged files, Splitify analyzes those first instead of peeking at the rest of your working tree like an overcaffeinated intern. This makes it much safer to say “group what I actually intend to commit,” not “group every questionable life choice from today.”
Renamed and deleted files are part of the analysis too. No more pretending that git mv is invisible magic or that removed files were “never really there.”
We also include last modification timestamps when we can infer them from the filesystem or git history. That gives the model one more clue for commit ordering, which is useful when your branch reads like three separate ideas wearing the same trench coat.
Commit Groups View
Once the AI has done the heavy lifting, a Splitify - Commit Groups tree appears in your Source Control panel. This is your staging ground.
- Review: See the files and the proposed commit message.
- Cherry-pick: Check the boxes to commit specific groups now, and leave others for later.
- Squash with dignity: Collapse selected groups into a single commit when the AI was technically correct but your branch only deserves one commit and a firm handshake. Splitify also suggests a combined commit message, because staring at three decent messages and inventing a fourth is a ridiculous use of your afternoon.
- Edit: If the AI hallucinates a commit message, you can edit it inline.
- Reorganize: Drag and drop files between groups. Sometimes the robot gets it wrong; you’re still the boss.
- Commit: Fire off a single group or batch commit everything sequentially.
Ungrouped Files
If the AI encounters a file it doesn't understand (or if you manually kick a file out of a group), it lands in the Ungrouped Files section. Think of this as the "Island of Misfit Changes." You can drag them into a valid group with one click.
Commit Message Mimicry
Splitify reads your recent git history to understand your commit style. Does your team use Conventional Commits? Do you use emojis? Do you write novels in the description? Splitify instructs the AI to match your existing style so your teammates don't suspect a robot is doing your work.
Configurable AI Model
By default, we use gpt-4o via the Copilot API. If you want another brain, configure an API key for OpenAI, OpenRouter, or a custom OpenAI-compatible provider such as Ollama Cloud, Groq, Together, DeepSeek, or LM Studio.
- Run Splitify: Select or Configure AI Model (
Ctrl+Alt+M / Cmd+Alt+M).
- Pick a Copilot model, configure OpenAI/OpenRouter directly, or add a custom OpenAI-compatible base URL.
- API keys are stored in VS Code SecretStorage, not in your settings file.
- Your model choice persists across sessions.
- Use Manage External Providers from the same picker to update API keys or remove saved custom endpoints.
Pre-Commit Hook Strategies
Pre-commit hooks are great until they run 10 times in a row. Splitify lets you choose how much pain you want to endure:
| Strategy |
Behavior |
run-once |
Default. Runs hooks once for all files before starting the commit chain. Fast and sensible. |
run-per-group |
Runs hooks before every individual group commit. Slower, but purist-approved. |
skip |
YOLO. Skips all hooks. |
Ignore Patterns
Some things just don't need AI analysis. Exclude lock files or build artifacts to save tokens and context window space:
"splitify.ignorePatterns": ["*.lock", "dist/**", "package-lock.json"]
Requirements
- VS Code 1.85+
- AI access: GitHub Copilot works out of the box when available. You can also configure OpenAI, OpenRouter, or a custom OpenAI-compatible provider with an API key.
Extension Settings
| Setting |
Default |
Description |
splitify.maxFilesPerGroup |
10 |
The cap on how big a single commit should be. |
splitify.showNotifications |
true |
We'll tell you when the commits are done. |
splitify.preCommitStrategy |
run-once |
run-once, run-per-group, or skip. |
splitify.ignorePatterns |
[] |
Glob patterns to hide from the AI. |
Commands
| Command |
Description |
Keybinding |
| Splitify: Analyze & Group Changes |
The "Fix My Mess" button. |
-- |
| Splitify: Commit This Group |
Commit just the focused group. |
-- |
| Splitify: Commit All Groups |
Commit everything in the list, one by one. |
-- |
| Splitify: Commit as One |
Turn selected groups into one respectable commit, with a suggested message. |
-- |
| Splitify: Commit Selected Groups |
Commit only what you've checked. |
-- |
| Splitify: Edit Commit Message |
Fix the AI's copywriting. |
-- |
| Splitify: Discard Group |
Delete the grouping (not the file changes). |
-- |
| Splitify: Move/Remove |
Context menu items to move files around. |
-- |
| Splitify: Create New Group |
Manually make an empty group. |
-- |
| Splitify: Refresh Analysis |
Re-roll the dice on the current changes. |
-- |
| Splitify: Select or Configure AI Model |
Switch or configure Copilot/OpenAI-compatible models. |
Ctrl+Alt+M |
Known Issues
- Context Limits: If you have 50+ modified files with massive diffs, the AI context window might get full. Splitify may truncate the input. If you've changed that much code without committing, consider this a gentle warning to commit more often.
- Provider Access: Copilot requires the Copilot extension and an active subscription. External providers require a valid API key and a model id accepted by that provider.