Help us improve
Share bugs, ideas, or general feedback.
From commit-commands
Creates Conventional Commits by analyzing staged diffs: detects type, scope, and generates a message with Vietnamese subject and English type. Useful for teams enforcing commit conventions.
npx claudepluginhub minhthang1009/dotclaude --plugin commit-commandsHow this skill is triggered — by the user, by Claude, or both
Slash command
/commit-commands:commit [optional custom instructions, e.g.: fix #123][optional custom instructions, e.g.: fix #123]inheritThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Purpose: create 1 Conventional Commits-compliant commit with a **Vietnamese subject**, **English type**, NO Claude attribution.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Purpose: create 1 Conventional Commits-compliant commit with a Vietnamese subject, English type, NO Claude attribution.
!`git rev-parse --git-dir >/dev/null 2>&1 && git status --short || echo "(not a git repo — cannot commit)"`
!`git rev-parse --git-dir >/dev/null 2>&1 && git diff --stat || true`
!`git rev-parse --git-dir >/dev/null 2>&1 && git log --oneline -5 || true`
Group files into logical groups (e.g., auth files, test files, docs files). 1 commit = 1 topic.
If multiple files span multiple topics → propose splitting commits:
I see 3 groups of changes:
src/auth/*— OAuth feature (5 files)tests/auth/*— OAuth tests (2 files)README.md,CHANGELOG.md— docsProposing 2 commits: (1+2 together), (3 separately). Agree?
If user has no special instruction → 1 commit for small/focused PRs, split for larger ones.
Read git diff --staged in detail, infer:
| Type | When to apply |
|---|---|
feat | Adds user-visible functionality |
fix | Fixes a bug that affects behavior |
refactor | Code changes that do NOT change behavior |
perf | Performance optimization |
docs | Docs only (*.md, comments, docstrings) |
test | Tests only |
style | Formatting, linting (no logic changes) |
build | Build system, dependencies |
ci | CI/CD config |
chore | Other miscellaneous tasks (rename files, clean comments, update lockfile) |
revert | Revert a commit |
<scope> = module/component affected (auth, api, ui, db, parser...). Optional if the change is broad.
Format:
<type>(<scope>): <Vietnamese description, ≤72 chars, no trailing period>
<Vietnamese body — explains WHY (not WHAT). Can be multiple paragraphs.>
<footer — issue references: Closes #123, Refs #456, BREAKING CHANGE: ...>
Small commit example:
fix(api): return 404 when user does not exist instead of 500
Previously the service threw NoSuchKey when calling getUser with a
non-existent id; the controller caught it as 500. Changed to throw
UserNotFoundError caught in middleware → returns 404.
Closes #218
Feature commit example:
feat(auth): add Google OAuth 2.0 login
Integrated passport-google-oauth20:
- New endpoints: GET /auth/google, GET /auth/google/callback
- User is auto-created on first login (lookup by email)
- Avatar synced from Google profile
Requires GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET in .env.
Closes #142
Breaking change example:
refactor(api)!: change /users response format from array to paginated
BREAKING CHANGE: GET /users previously returned an array of users,
now returns { items, total, page, pageSize }. Frontend needs updating.
Reason: client hit OOM with >10k users. Pagination stabilizes memory.
Refs #305
Print the message for user confirmation first:
I will commit with this message:
[message here]
OK?
If OK → run (Claude generates the actual command with specific values):
For short, ASCII messages (1 line):
git add <specific files>
git commit -m "<subject>"
For multiline messages or those containing Unicode (Vietnamese, emoji), use -F file to avoid encoding errors (especially on Windows + PowerShell):
git add <specific files>
# Create a temporary message file — Linux/macOS/Git Bash use /tmp/, Windows PowerShell use $env:TEMP\
cat > /tmp/commit-msg.txt <<'EOF'
<subject>
<body>
<footer>
EOF
git commit -F /tmp/commit-msg.txt
rm /tmp/commit-msg.txt
OS note:
- On Git Bash (Windows)
/tmp/maps to%TEMP%(usuallyC:\Users\<user>\AppData\Local\Temp\) — this directory already exists, no need to create it.- On native PowerShell (without Git Bash) use
$env:TEMP\commit-msg.txtinstead of/tmp/....git commit -m "subj" -m "body"via PowerShell here-string may garble Unicode. Using-Fis safe cross-platform.
git add . — only add files that have been reviewed.Co-Authored-By: Claude or 🤖 Generated with Claude Code tagline (disabled via settings).--no-verify unless user explicitly requests it.--amend on someone else's commit.feat vs fix → think "Does the user-visible behavior differ from before?". Yes → feat/fix. No → refactor/chore./commit push-pr — Commit + Push + Create PRWhen $ARGUMENTS contains push-pr or push pr:
main/master/develop → create a new branch first: git checkout -b <type>/<scope>-<short-desc>.git push -u origin HEAD.gh pr create --fill (requires GitHub CLI). If gh is absent → provide install instructions + stop./commit clean — Clean stale branchesWhen $ARGUMENTS contains clean or clean-gone:
git fetch --prune[gone] upstream: git branch -vv | grep ': gone]'git worktree remove <path> first.git branch -d <branch> for each branch (use -d not -D — safer, fails if unmerged).If user provides an argument (e.g., /commit combine everything into 1 commit), follow it. Default: auto-propose grouping.