Create commits with intelligent splitting and pre-commit fixes
Intelligently creates conventional commits with emoji, automatically splitting large changes into atomic commits and fixing pre-commit issues before committing.
/plugin marketplace add ilyannn/claude-commands/plugin install flow@dev-flow-toolstopicThis command helps you create well-formatted commits with conventional commit messages and emoji.
To review the pre-commit issues and create a commit, just type:
/flow:commit
Or with hinting about a specific topic:
/flow:commit VoiceSelector refactor
git status --short || truegit diff HEAD || truegit branch --show-current || truegit log --oneline -20 || truegit hook run pre-commit || trueNote: This is a custom command. When being executed, Claude will see a "/flow:commit is running" message indicating the command is being processed and your thinking should proceed as below.
git init and use main branch as default.git status output; if none are staged, automatically add all modified and new files with git add.git diff to understand what changes are being committedjust format.--no-verify or continue other work.<type>: <description> where type is one of:
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc)refactor: Code changes that neither fix bugs nor add featuresperf: Performance improvementstest: Adding or fixing testschore: Changes to the build process, tools, etc.feat: New featurefix: Bug fixdocs: Documentationstyle: Formatting/stylerefactor: Code refactoringperf: Performance improvementstest: Testschore: Tooling, configurationci: CI/CD improvementsrevert: Reverting changesfix: Fix compiler/linter warningsfix: Fix security issueschore: Add or update contributorsrefactor: Move or rename resourcesrefactor: Make architectural changeschore: Merge brancheschore: Add or update compiled files or packageschore: Add a dependencychore: Remove a dependencychore: Add or update seed fileschore: Improve developer experiencefeat: Add or update code related to multithreading or concurrencyfeat: Improve SEOfeat: Add or update typesfeat: Add or update text and literalsfeat: Internationalization and localizationfeat: Add or update business logicfeat: Work on responsive designfeat: Improve user experience / usabilityfix: Simple fix for a non-critical issuefix: Catch errorsfix: Update code due to external API changesfix: Remove code or filesstyle: Improve structure/format of the codefix: Critical hotfixchore: Begin a projectchore: Release/Version tagswip: Work in progressfix: Fix CI buildchore: Pin dependencies to specific versionsci: Add or update CI build systemfeat: Add or update analytics or tracking codefix: Fix typosrevert: Revert changeschore: Add or update licensefeat: Introduce breaking changesassets: Add or update assetsfeat: Improve accessibilitydocs: Add or update comments in source codedb: Perform database related changesfeat: Add or update logsfix: Remove logstest: Mock thingsfeat: Add or update an easter eggchore: Add or update .gitignore filetest: Add or update snapshotsexperiment: Perform experimentsfeat: Add, update, or remove feature flagsui: Add or update animations and transitionsrefactor: Remove dead codefeat: Add or update code related to validationfeat: Improve offline supportWhen analyzing the diff, consider splitting commits based on these criteria:
If unclear, ask the user how to proceed.
Good commit messages:
Example of splitting commits:
โผ๏ธ If no git repository exists, the command will initialize one with main as the default branch.
โผ๏ธ If specific files are already staged, the command will only commit those files.
โผ๏ธ If no files are staged, it will automatically stage all modified and new files.
โผ๏ธ The commit message will be constructed based on the changes detected, but using user-provided hints
โผ๏ธ Before committing, the command will review the diff to identify if multiple commits would be more appropriate.
โผ๏ธ If suggesting multiple commits, it will help you stage and commit the changes separately.
โผ๏ธ Always reviews the commit diff to ensure the message matches the changes.
โผ๏ธ This command can commit with --no-verify but ONLY if the user explicitly agreed to it when asked.