dist/codex/plugins/dev-workflow/skills/committing-code/SKILL.md
Smart git commits with logical grouping. Use when user says "commit", "commit changes", "save changes", "create commit", "bundle commits", "git commit", or wants to commit their work.
npx skillsauth add alexei-led/claude-code-config committing-codeInstall 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.
Group changed files logically into focused, atomic commits.
Scope: only inspect changes, group them, and create normal commits. Do not rewrite history, amend existing commits, force-push, or stage secrets. Include relevant git status, git diff, and git log output in the proposal.
Not for squashing, rebasing, or cherry-picking — those rewrite history.
Run before any commit (in parallel if supported):
git status --short
git diff --stat HEAD
git diff HEAD
git log --oneline -8
If no changes: Say "Nothing to commit" → stop. If not a git repository: Report "Not a git repository" → stop. If detached HEAD or interrupted rebase/merge: Report the git state verbatim → stop.
Group files by: feature (impl+tests), fix (bug+test), refactor, docs, config. Base grouping on diff output only — do not infer purpose from filename alone.
Match commit style from recent history.
Proposed commits:
1. feat: add user validation
- src/validate.ts
- src/validate_test.ts
2. docs: update README
- README.md
If user rejects the grouping: Ask for revised grouping; do not proceed until approved.
Never stage files matching .env, *.pem, *.key, *.p12, *credentials*, *secret*, *password*, or *token*. Flag to user if detected in changes. Safe source/test files may still be grouped and committed separately after approval.
Pause for user approval before each git add and git commit.
If pre-commit hook rejects: Report the hook error verbatim; do not retry with --no-verify.
Run final checks and show the result:
git status --short
git log --oneline -n <number-of-created-commits>
Summarize commits created and any remaining uncommitted files.
tools
Idiomatic shell development for POSIX sh, Bash, Zsh, Fish, hooks, CI shell steps, and scriptable CLI glue. Use when writing or changing `.sh`, `.bash`, `.zsh`, `.fish`, `.bats`, shell functions, shell pipelines, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, TypeScript, Go, web code, or infrastructure operations.
tools
Use when planning, executing, checkpointing, finishing, or inspecting lightweight spec-driven work. Runs one task at a time using `.spec/` markdown files and the bundled `specctl` helper. NOT for broad product discovery beyond a short requirement interview.
testing
Author, inspect, troubleshoot, and review infrastructure across IaC, Kubernetes, cloud resources, containers, CI/CD, and Linux hosts. Use when changing Terraform/OpenTofu, Kubernetes, Helm, Kustomize, Dockerfiles, GitHub Actions, AWS, GCP, Cloud Run, BigQuery, IAM, logs, instances, or service health. NOT for deploy/apply/rollback workflows (see deploying-infra). NOT for shell scripts or generic command pipelines (see writing-shell).
development
Configure safe git workflow hygiene: pre-commit/pre-push hooks, Gitleaks secret scanning, .gitignore rules, local git config, and guardrails. Use when setting up git hooks, gitleaks/git leaks, staged pre-commit checks, pre-push validation, core.hooksPath, .gitignore, or git config best practices. NOT for creating commits (use committing-code), cleaning branches/worktrees (use cleanup-git), or creating worktrees (use using-git-worktrees).