skills/commit-creator/SKILL.md
Create English conventional commit messages for the current changes. Use when the user wants to commit code, asks for a commit message, or needs monorepo scopes and version updates handled correctly.
npx skillsauth add perdolique/workflow commit-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Always write in English only
<type>(<scope>): summary
all)- {emoji} {text}. Aim to keep explanatory bullets within about 100 characters when that preserves readability, but allow longer lines for package/version entries, URLs, or other tokens that become awkward when wrapped. One bullet = one logical change. Do not group multiple items on a single line or leave empty lines between bullets unless you intentionally want separate paragraphs.! after type and BREAKING CHANGE: footer- Fixes #123 or - Fixes PROJ-456Co-authored-by:, Co-Authored-By:, or any attribution to Copilot, coding agents, AI assistants, or any other automated tools.A commit message with only the summary line is incomplete output unless the user explicitly asked for a subject-only commit.
Before creating a commit or printing a commit message, verify that the generated message includes:
If you cannot identify at least one concrete change for the body, stop and report that a commit message cannot be generated from the available changes.
When the commit includes dependency or package version updates, spell out every updated package in the body.
- 📦 package-name: old-version -> new-versionupdated dependencies or bump packagesGit treats every extra -m flag as a separate paragraph and inserts a blank line between paragraphs.
-m only when the user explicitly requested a subject-only commit-m for the entire body, with plain newlines between bullet lines-m flag per bullet, per package update, or per issue referencegit commit -F or git commit -F-Keep the final message layout like this:
<type>(<scope>): summary
- first bullet
- second bullet
- third bullet
Types: feat ✨, fix 🐛, docs 📚, style 💄, refactor ♻️, perf ⚡, test ✅, build 🔧, ci 👷, chore 🔨, revert ⏪
Before committing, check the current branch:
git branch --show-current
git remote show origin | grep "HEAD branch"
If the current branch is the default branch (e.g. master, main) and the user has not explicitly indicated they want to commit to it, ask the user:
Wait for user's answer before proceeding.
If the user explicitly stated the target branch in their request (e.g. "commit to master", "commit here"), skip the question and proceed.
When the user asks to commit without extra scope limits, do not stage only files changed by the agent. Treat all current changes as intended unless the user asks for a narrower scope.
When both staged and unstaged changes exist in the working directory, and interaction is available:
After executing git commit, wait for the process to exit on its own — do not interrupt or kill it. Pre-commit hooks (linters, type checkers, test runners) can run for a long time without producing any output. Killing the process mid-run causes an exit code 130 (SIGINT) and leaves the working tree in a dirty state.
When the commit body spans multiple lines, prefer one of these command shapes:
git commit -m "chore(deps): update development dependencies" -m "- 📦 eslint: 8.57.0 -> 9.0.0
- 📦 prettier: 2.8.8 -> 3.0.0
- 🔧 Update lint configuration for new versions"
git commit -F- <<'EOF'
chore(deps): update development dependencies
- 📦 eslint: 8.57.0 -> 9.0.0
- 📦 prettier: 2.8.8 -> 3.0.0
- 🔧 Update lint configuration for new versions
EOF
Do not generate git commit -m "summary" -m "bullet 1" -m "bullet 2" unless you explicitly want blank lines between those body paragraphs.
Exit code 130 (interrupted):
The commit process was interrupted — this is not a validation failure. Do not auto-retry. Report that the commit was interrupted and ask the user whether to:
Any other non-zero exit code (validation failure):
If the commit fails (e.g., due to pre-commit hooks, linting failures, or other validation errors):
--no-verify flag to bypass hooksSimple feature:
feat(button): add loading state
- ✨ Add spinner icon during async operations
- 📦 @ui/icons: v1.0.0 → v1.1.0
- Fixes #42
Breaking change:
feat(theme)!: redesign color tokens
- ✨ Replace RGB values with HSL format
- 💄 Update all component styles to use new tokens
- 📦 @ui/theme: v2.1.0 → v3.0.0
BREAKING CHANGE: Color token values changed from RGB to HSL format
For more examples, see references/examples.md
development
Vue 3 + TypeScript component conventions for `.vue` SFC work. Use for Vue UI tasks that change component APIs/templates/styling/accessibility/composables/template refs/v-model or related component behavior. For Nuxt/Pinia/routing/E2E/Vitest tasks apply only to component-layer code and combine with the more specific local skill.
tools
Create or draft GitHub releases from existing tags and repository history. Use this whenever the user asks to publish a GitHub release, create release notes for a new version, mirror previous GitHub releases, release a tag/version, or says they have already released a new package version and need the matching GitHub release.
development
Plan and drive non-trivial coding work from ambiguous request to scoped implementation and verification. Use when the user asks to plan before coding, plan then implement, split work into iterations or PR-sized tasks, tackle a risky multi-file feature, refactor, migration, or recover after failed work. Do not use for simple one-step edits, commit or PR creation, pure framework/domain conventions, or repo-specific roadmap docs where a more specific planning skill applies.
development
TypeScript coding conventions for writing, reviewing, and refactoring typed code. Use when working on `.ts`, `.tsx`, or files that embed TypeScript such as Vue, Astro, or Svelte components. Also use for TypeScript snippets, typed refactors, and review comments about code organization or function structure.