Help us improve
Share bugs, ideas, or general feedback.
From north-starr
Generates descriptive git commit messages from staged changes by analyzing diffs, recent history, and detecting conventions like Conventional Commits or ticket prefixes.
npx claudepluginhub selcukyucel/north-starr --plugin north-starrHow this skill is triggered — by the user, by Claude, or both
Slash command
/north-starr:generate-commitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze staged git changes and generate clear, descriptive commit messages that explain what was changed. The skill examines git diffs, file modifications, and code context to produce meaningful commit messages.
Generates clear, conventional commit messages from git diffs. Useful when writing commit messages, reviewing staged changes, or preparing commits.
Generates descriptive commit messages following conventional commits format by analyzing git diffs. Useful when writing commit messages or reviewing staged changes.
Generates Conventional Commits from staged git changes: classifies feat/fix/docs types, detects scopes/breaking changes, matches project style from history.
Share bugs, ideas, or general feedback.
Analyze staged git changes and generate clear, descriptive commit messages that explain what was changed. The skill examines git diffs, file modifications, and code context to produce meaningful commit messages.
Use this skill when the user requests:
Run the following git commands in parallel to understand the current state:
git status
git diff --staged
git log -10 --oneline
Also check for commit convention config files (run in parallel):
# Check for conventional commits / commitlint config
ls .commitlintrc* .czrc .cz.json commitlint.config.* 2>/dev/null
# Check package.json for commitizen or commitlint config (if it exists)
grep -l "commitizen\|commitlint\|conventional" package.json .husky/commit-msg 2>/dev/null
Key information to extract:
Files that have been staged (from git status)
Files that are modified but NOT staged — if present, warn the user: "Note: you have unstaged changes in [files] that won't be included in this commit."
The actual code changes (from git diff --staged)
Recent commit message patterns in the repository (from git log)
Commit convention — detect from config files first, then infer from the last 10 commit messages:
feat:, fix:, docs:, refactor:, chore:, test:, ci:, perf:, build:, style:feat(auth):, fix(api): — the scope usually maps to a module or directoryPROJ-123: description, #123 description[module] tags)If a convention is detected, ALL generated messages MUST follow it. Do not mix conventions.
Examine the staged changes to understand:
Important considerations:
Split detection: If the staged changes contain unrelated concerns (e.g., a bug fix AND a new feature, or changes to two independent modules with no connection), suggest splitting into separate commits:
These staged changes appear to contain multiple unrelated concerns:
1. [concern A] — [files]
2. [concern B] — [files]
I'd recommend splitting into separate commits for a cleaner history.
Want me to generate messages for each, or create one combined message?
Only suggest splitting if the concerns are truly independent. Related changes (e.g., a feature + its tests, a refactor + updated imports) should stay in one commit.
Create a clear, concise commit message following these guidelines.
If a convention was detected in Step 1, use it. Otherwise, use this default format:
Format:
<type>(<scope>): <summary>
<optional detailed explanation if needed>
<optional footer: BREAKING CHANGE, references>
Type — infer from the changes:
feat: new feature or capabilityfix: bug fixdocs: documentation onlyrefactor: code change that neither fixes a bug nor adds a featuretest: adding or updating testschore: maintenance, dependencies, CI, toolingperf: performance improvementstyle: formatting, whitespace (no logic change)ci: CI/CD configurationbuild: build system or external dependenciesIf the repo doesn't use conventional commits, omit the type(scope): prefix and start with a verb instead.
Scope — detect from the changed files:
feat(auth):, fix(api):)refactor(di):)feat: not feat(everything):)Summary line rules:
Breaking changes: If the staged changes include any of these, add BREAKING CHANGE: footer or ! after the type:
feat(api)!: change authentication to OAuth2
BREAKING CHANGE: removes basic auth support. All clients must migrate to OAuth2 tokens.
Examples of good summary lines:
feat(auth): add user authentication to profile screenfix(team): prevent crash when team has no playersrefactor(navigation): simplify coordinator initializationchore(deps): update dependencies to latest versionsOptional detailed explanation:
Output the generated commit message in a clear format:
Suggested commit message:
<the commit message>
Then ask if the user would like to:
Do not automatically commit - just provide the message and let the user decide what to do with it.
Git diff shows: Fixed a nil pointer crash in TeamDetailView.swift
Generated message:
fix(team): prevent crash when team has no players assigned
Prevents nil pointer exception when accessing player array in team detail view.
Git diff shows: Added new subscription management screen with multiple files
Generated message:
Add subscription management screen for organizations
Allows organization admins to view, create, and manage subscription plans.
Includes new view, view model, and coordinator integration.
Git diff shows: Reorganized authentication logic across multiple files in src/auth/
Generated message:
refactor(auth): simplify repository and view model dependencies
Moves repository logic to dedicated classes and reduces coupling
between auth view models and service layer.
Git diff shows: Changed API response format, removed deprecated fields
Generated message:
feat(api)!: update user endpoint response to v2 schema
BREAKING CHANGE: removes `legacy_id` and `display_name` fields from
/api/users response. Use `id` and `name` instead.
Git diff shows: Fixed a login bug AND added a new settings page
Suggested response:
These staged changes appear to contain multiple unrelated concerns:
1. Login bug fix — src/auth/login.ts
2. New settings page — src/settings/
I'd recommend splitting into separate commits for a cleaner history.
Want me to generate messages for each, or create one combined message?
git add)